2014-11-07 2 views
0

AngularJs 응용 프로그램을 등록한 후 리디렉션을 테스트하고 있습니다. 등록 버튼을 클릭 한 후 URL이 targetRegex과 일치하는지 확인하는 함수를 호출합니다. 한편, 다음 코드는 잘 작동 보인다 timeout: timed out after 30000 msec waiting for spec to completeJasmine 대신 regex.test()를 사용하여 리디렉션을 테스트하십시오.

return browser.wait(function() { 
    return browser.driver.getCurrentUrl().then(function(url) { 
     return expect(url).toContain(targetRegex); 
    }); 
    }); 

: 첫 번째 코드 블록을 사용 재스민 expect하지만 내가 오류를 얻을

return browser.wait(function() { 
    return browser.driver.getCurrentUrl().then(function(url) { 
     return targetRegex.test(url); // look for a match of the regex /profile/ in the 'url' 
    }); 
    }); 

아무도 왜 제발 설명 할 수 있습니까?

+0

첫 번째 URL이 실패 할 때 실제 URL은 무엇입니까? –

+0

의'console.log (url)'은'http : // localhost/profile/200490'입니다. –

답변

0

Jasmine docs : 'tocontain'정규 표현식은 배열에서 항목을 찾는 데 사용됩니다.

정규식을 통해 일치 시키려면 expect(url).toMatch(targetRegex);처럼 toMatch 대신 사용하고 싶다고 생각합니다.

그러나 return 이후에 toMatch 메서드를 사용하고 싶은지 확실하지 않습니다. 그것은 간단한 부울 결과를 반환하지 않습니다. source code for that method을 보면 compare 메서드가있는 객체를 반환한다는 것을 알 수 있습니다. matcher의 하위 디렉토리에있는 다른 방법의 소스 코드를 보면 분명히 재스민 라이브러리가 내부적으로 사용하는 표준 패턴입니다.

결론적으로, 최종 결과는 부울을 반환하기 때문에 return targetRegex.test(url); 방법을 사용하는 것이 좋습니다.

+0

괜찮습니다. 어쨌든, 테스트에서 일반 J를 사용하는 것이 좋습니까? "나는 상태를 확인하고있다"는 재스민의 기대를 사용하면 안된다. –

관련 문제