인턴 테스트 방법에 문제가 생겨서 jQuery로 AJAX 호출을 사용하는 유닛을 테스트하려고 시도했습니다. Intern이 WebDriver 서버 (이 경우 phantomjs --webdriver=8910
)에 테스트 클라이언트를 제공하기 때문에 결국 localhost:9000
에서 실행되는 테스트가 끝납니다. 이것은 명백하게 동일 출처 정책 문제를 야기합니다.인턴 AJAX 단위 테스트
나는이 문제를 해결하고 도메인 간 요청을 할 수 있지만 일단 인증 쿠키가 필요하면 분명히 우리의 백엔드가 localhost
에 대한 쿠키를 설정하지 않기 때문에 차단됩니다. 따라서 쿠키에 대한 액세스 권한이 없습니다.
나는 여러 가지 순열 우리의 서버를 가리 키도록 proxyUrl
옵션을 변경하려고했지만, 지금까지 아무 일 없다 :
https://my.server.com/
https://my.server.com/js/
https://my.server.com/js/intern/
https://my.server.com/js/intern/client.html
https://my.server.com/js/intern/client.html?config=tests/intern
은 인턴에 서버를 알려줍니다 것을 내가 발견 한 WebDriver 로그를보고 부하 http://localhost:9000/__intern/client.html?config=...
. 나는 proxyUrl
을 https://my.server.com/js/
으로 설정하고 심볼릭 링크 __intern
을 intern
으로 설정하려고했지만 테스트가 실행 중이 지 않거나 runner.js
으로 다시보고되지 않습니다. 나는이 방법을 실행할 PhantomJS 로그는 다음과 같이 보일 :
[DEBUG - 2013-05-24T15:17:50.930Z] SessionReqHand - _postUrlCommand - Session '194ff0a0-c485-11e2-9c64-9986b0c95ae1' is about to load URL: https://my.server.com/js/__intern/client.html?config=tests%2Fintern&sessionId=194ff0a0-c485-11e2-9c64-9986b0c95ae1&reporters=webdriver
[DEBUG - 2013-05-24T15:17:50.943Z] Session [194ff0a0-c485-11e2-9c64-9986b0c95ae1] - _execFuncAndWaitForLoadDecorator - Page Loading in Session: true
[DEBUG - 2013-05-24T15:17:50.962Z] Session [194ff0a0-c485-11e2-9c64-9986b0c95ae1] - _oneShotCallback - onLoadFinished
[DEBUG - 2013-05-24T15:17:50.962Z] Session [194ff0a0-c485-11e2-9c64-9986b0c95ae1] - _execFuncAndWaitForLoadDecorator - onLoadFinished: success
[DEBUG - 2013-05-24T15:17:51.051Z] Session [194ff0a0-c485-11e2-9c64-9986b0c95ae1] - _execFuncAndWaitForLoadDecorator - Page Loading in Session: false
[DEBUG - 2013-05-24T15:17:51.051Z] Session [194ff0a0-c485-11e2-9c64-9986b0c95ae1] - _resetOneShotCallbacksDecorator
[DEBUG - 2013-05-24T15:17:51.052Z] SessionReqHand - _SuccessHandler - status: success
[DEBUG - 2013-05-24T15:17:51.184Z] Session [194ff0a0-c485-11e2-9c64-9986b0c95ae1] - page.onConsoleMessage - Tests complete
테스트 러너는 응답과 proxyUrl
이 인턴 실행 프록시 서버에서 지적되지 않기 때문에 결코, 그러나, 테스트 결과를받지 않습니다.
편집 5/28
그것은이 많은 이상적으로 테스트 스택 오히려 코드베이스를 강요하는 것보다, 코드베이스에 맞게 구성해야하지만 (백 엔드 수정을 통해 우회 할 수 있다는 것을 언급 할 가치가 준수하기 위해),하지만이 경우 옵션이라고는 말할 수 없습니다.
이상적으로는 인턴이 지정된 URL에서 client.html
을로드하도록 구성 할 수 있으며 JSONP와 같은 일부 교차 원점 호환성 방법을 통해 localhost:9000
프록시에 대한 리포터 POST를 가질 수 있습니다. 나는 합리적인 대안을 찾을 수 없기 때문에 인턴이 AJAX를 통해 백 엔드와 통신하는 단위 테스트를 완전히 지원하지는 않는 것처럼 보입니다.
고마워!이전에 역방향 프록시를 사용하는 것에 대해 생각하지 않았습니다. 왜냐하면 우리는 이미 백 엔드를 위해 하나를 가지고 있기 때문에 그것이 방해가 될 것이라고 생각했지만 문제가되지 않아야합니다. – coreyschram