2017-10-03 10 views
0

NightwatchJs 프레임 워크를 사용하여 테스트하고 있습니다. 실제 값과 유효한 값을 비교해야합니다. 그러나 올바른 결과 값이 예상 결과 배열에서 발견되는 동안 현재 구현에서는 여러 실패를 throw합니다. NO 값이 일치하거나 테스트가 통과하는 경우에만 테스트 출력을 표시하려고합니다.배열에 대해 어설 션하는 방법과 모든 값을 확인한 후에 일치하는 항목이없는 경우에만 실패하는 방법


나는 다음과 같은 배열이 점을 감안 :

var topDesktop = [['728', '90'], ['970', '250'], ['970', '90'], ['980', '250'], ['980', '240'], ['980', '120'], ['980', '90'], ['1000', '90'], ['1000', '300']]; 

을 그리고 나는 현재 값이 허용되는 값 (topDesktop 배열) 내에 있는지 알고 싶어요.

내가 피하기 위해 같은 어떤
✔ Passed [equal]: 728,90 == [ '728', '90' ] 
✖ Failed [equal]: ('728,90' == [ '970', '250' ]) - expected "970,250" but got: "728,90" 
✖ Failed [equal]: ('728,90' == [ '970', '90' ]) - expected "970,90" but got: "728,90" 
✖ Failed [equal]: ('728,90' == [ '980', '250' ]) - expected "980,250" but got: "728,90" 
. 
. 
. 

이 일치 시도마다 실패를하는 것입니다 : 분명한 이유

var actual = result.toString(); 
    for(var i = 0; i < topDesktop.length; i++){ 
     client.assert.equal(actual, topDesktop[i]); 
    } 

출력 는 루프의 결과입니다. 어떤 훌륭한 아이디어?

+0

예상 값이 배열에서 발견되는지 확인하기 위해 함수를 작성하고 해당 함수 호출의 결과를 선언하려고하는 이유가 있습니까? – stone

답변

0

제대로 이해하면 실제 값이 예상 값 중 하나인지 알아야합니다. 이처럼

var actual = result.toString(); 
var isFound = false; 
for(var i = 0; i < topDesktop.length; i++) { 
    if(actual == topDesktop[i]) { 
     isFound = true; 
     break; 
    } 
} 
client.assert.equal(isFound, true); 

, 값이 발견되면, 그것은 휴식 루프의 중지 때문에, 검사를 계속하지 않으며, 값이 있다면 마지막으로 당신은 확인합니다 : 그렇다면, 당신은 다음과 같은 작업을 수행 할 수 찾았는지.

+0

더 좋은 버전이있을 수 있지만, 자정이 거의 다가 왔으므로 나는 지금 가장 선명한 아이디어를 얻지 못했을 것입니다. 그냥 도와주고 싶었습니다. –

+0

적어도 그것이 @Clive에서 작동했습니다. 고마워요! – Alextgda

+0

여러분을 환영합니다! 천만에요 ;) –