"통합 테스트"("단위 테스트"또는 "UI 테스트"[일명 E2E/각도기]가 아님)를 설정하는 임무를 맡았습니다. 이 통합 테스트는 컨트롤러의 $ http POST 요청을 외부 API로 테스트하고 예상되는 응답 사례를 확인하는 것 이상을 수행하지 않습니다.
나는 이것을 시도했다 : - ngMock 없음 (직접 http 자원에 연결해야 함); - ngMock (passThrough()가 정의되지 않았기 때문에 http 리소스를 통과 할 수 없음); - 마지막으로 ngMockE2E로 시도했지만 passThrough()가 작동하지만 요청이 success() 또는 error()를 반환하지 않습니다.
나는 $httpBackend.flush()
을 시도했으며 "플러시 요청이 없습니다!"라고 말했습니다. (passThrough()를 사용하고 있기 때문에 flush 함수가 필요하지 않다고 가정합니다).
나는 $rootScope.$apply()
을 시도했지만 별다른 차이가 없습니다.
예상대로 작동하는 방법을 모르는 경우 각도기를 사용하지 않아도 가능합니까? 누구도 AngularJS 앱을위한 "통합 테스트"를 수행합니까? "단위 테스트"와 "E2E 테스트"가 표준 인 것처럼 보입니다. "통합 테스트"가 아닙니다.
"유닛 테스트"는 조롱 된 리소스를 사용하고 있으며 예상대로 success() 및 error()를 호출합니다.
생각/아이디어?
[편집 :] 발견 된 문제는 재스민 비동기 테스트와 관련이 있습니다. Jasmine 1.X에서는 run()과 waitsFor()를 사용해야하고, Jasmine 2.X에서는 done()을 사용할 수 있습니다 (2.X를 얻을 수는 없지만 모든 테스트를 중단했습니다). 그래서 지금은 $ http 요청에서 콜백을 받고 있지만 그것은 항상 error()가 호출됩니다. 이제 success()가 호출되지 않는 이유를 알 수 없습니다. 어떤 아이디어?
'angular-mocks.js' 스크립트를 포함하지 않으면 기본'$ httpBackend'를 그대로두기 때문에 충분합니다. – Phil
@ 필 힐스를 시도하면 $ http 요청의 성공/오류가 발생하지 않습니다. 테스트는 성공한 것으로 나타 났지만 (재스민에서는), 결코 발생하지 않는 성공/오류 내부의'console.log ('hello');가 있습니다. 그러나 조롱 된 $ http 요청으로 "단위 테스트"를 실행하면 바로 "hello"메시지가 나타납니다. 따라서 어떤 이유로 든 실제 요청을 수행하면 성공/오류 콜백이 실행되지 않으므로 서버에서 응답 사례를 테스트 할 수 없습니다. – BuildTester1
https://github.com/yearofmoo/ngMidwayTester를 사용할 수 있습니다. 설정이 매우 쉽고 ngMock과 비슷합니다. 따라서 기본적으로 ngMock을 제외하고 ngMidwayTester로 대체하십시오. – wayne