2017-05-11 2 views
0

단위 테스트를 쓰는 것이 새로운데, 봇 코드의 단위 테스트를 작성하고 있습니다. 내가 날 귀찮게이 부분이 있습니다코드 라인 단위 테스트

const accessToken = (() => { 
    if (process.argv.length !== 3) { 
    console.log('usage: node main/implementation'); 
    process.exit(1); 
    } 
    return process.argv[2]; 
})(); 

이스탄불이 줄 return process.argv[2];이 적용되지 않습니다 저를 보여주고있다,하지만 나는 그 라인에 대한 단위 테스트를 작성하는 방법에 대한 어떤 생각을 가지고 있지 않습니다. 아이디어가 있으십니까? 이스탄불이 라인이 적용되지 않는다는 것을 말한다면

+0

당신은 당신의 인생에 3 개 개의 매개 변수를 전달해야 의사 코드는 const를 같이한다 accessToken = (() => {... 코드}) ('A', 'B', 'C') ; – vabii

답변

1
, 그것은 모든 테스트 케이스가 일치한다는 것을 의미

process.argv.length !== 3 

등 테스트 중 어느 것도

return process.argv[2]; 

를 고정하기 전에이 라인에 가고 없다 ,이 라인에 대한 테스트를 추가하는 것이 적절한 지 물어보십시오 (100 % 적용 범위가 항상 필요한 것은 아닙니다).

문제를 해결하려면 process.argv 값을 설정하면됩니다. (이것은 단지 아이디어 일 뿐이며, 나는 process.argv의 값을 설정할 수 있는지 확신 할 수 없다.) 여기

const fakeArgv = [1, 2, 3]; 
process.argv = fakeArgv; 

it('should return third argv',() => { 
    expect(accessToken).to.equal(3) 
}) 
+0

"return process.argv [2];"을 삭제하면 내 응용 프로그램이 더 이상 작동하지 않습니다 ^^ ' 그래서 나는 모든 고환이 그 행으로 가고 있으며 아무 것도이 행에 갈 것이라고 생각하지 않습니다 : process.argv. 길이! == 3 –

+0

앱을 시작하기 위해 어떤 명령을 실행합니까? 검사를 시작하기 위해 어떤 명령을 실행합니까? "시작": 명령이 다른 경우, 앱에서 인수를 가질 수 있지만 당신의 검사 결과 내 package.json에서 – ThomasThiebaud

+0

에서 "노드 빌드/implementation.js AEDARC6WSMQNHLEA6I2TNFOT7GEJ2VOH" "테스트": "모카 시험/검사 .spec.js ", –