나와 내 상사 사이에 제기 된 뜨거운 토론은 vojitajina pull request에 따라 Angular E2E testing.에 따라 e2e 테스트를 실행하기 위해 서버를 실행해야합니다. 따라서 e2e 테스트를 실행하면 실제 서버가 필요하고 실제 서버는 DB가 필요합니다. 테스트가 느려집니다. 이제는 실제 서버를 사용하지 않고 e2e를 테스트하는 방법에 대해 의문이 생깁니다. HTTPBackend 및 e2e 각도 API를 사용하여 브라우저(), 요소(), select()를 사용할 수있는 방법이 있습니까?모의 된 httpBackend를 사용한 각도 E2E 테스트?
4
A
답변
5
우리는 쉘 스크립트를 사용하여 시드 된 테스트 서버의 컬 요청을 주기적으로 캡처합니다. 이러한 응답은 $ httpBackend.whenGet (...). respond()를 통해 반환되어 해당 데이터를 가로 채서 반환합니다.
그래서, 우리의 index.html을
if (document.location.hash === '#test') {
addScript('/test/lib/angular-mocks.js');
addScript('/test/e2e/ourTest.js');
window.fixtures = {};
addScript('/test/fixtures/tasks/tasks_p1.js');
// the tasks_p1.js is generated and has "window.fixtures.tasks_p1 = ...json..."
addScript('/test/fixtures/tasks/tasks_p2.js');
// the tasks_p2.js is generated and has "window.fixtures.tasks_p2 = ...json..."
addScript('/test/e2e/tasks/taskMocks.js\'><\/script>');
}
ourTest.js
angular.module('ourTestApp', ['ngMockE2E','taskMocks']).
run(function ($httpBackend, taskMocks) {
$httpBackend.whenGET(/views\/.*/).passThrough();
$httpBackend.whenGET(/\/fixtures.*\//).passThrough();
taskMocks.register();
$httpBackend.whenGET(/.*/).passThrough();
});
taskMocks.js 몇 가지 경우에
/*global angular */
angular.module('taskMocks', ['ngMockE2E']).
factory('taskMocks', ['$httpBackend', function($httpBackend) {
'use strict';
return {
register: function() {
$httpBackend.whenGET(..regex_for_url_for_page1..).respond(window.fixtures.tasks_p1);
$httpBackend.whenGET(..regex_for_url_for_page2..).respond(window.fixtures.tasks_p2);
}
};
}]);
우리의 데이터는 현재 날짜와 관련이 ; 예 : "이번 주 작업"이므로 register() 메서드에서 캡처 한 데이터를 마사지합니다.
편집 우리는 지금 우리의 조롱 개체에 대한 공장을 만들 Rosie를 사용합니다. 따라서 예상되는 json 응답에 대한 CURLing 테스트 서버가 필요하지 않습니다. index.html을 더 이상이 "의 .js"비품을로드하고 모의 객체의 모양 :
/*global angular */
angular.module('taskMocks', ['ngMockE2E']).
factory('taskMocks', ['$httpBackend', function($httpBackend) {
'use strict';
var tasks_p1 = [ Factory.build('task'), Factory.build('task')],
tasks_p2 = [ Factory.build('task'), Factory.build('task')]
return {
register: function() {
$httpBackend.whenGET(..regex_for_url_for_page1..).respond(tasks_p1);
$httpBackend.whenGET(..regex_for_url_for_page2..).respond(tasks_p2);
}
};
}]);
-1
가 귀하의 질문에 대답하려면
taskMocks.js, 그래 실제 서버를 포함하지 않고 그것을 할 수있는 방법이 없습니다 e2e 테스트에서 $ httpBackend를 사용하여 응답을 조롱 할 수는 있지만 단위 테스트에서 조롱하는 것만 큼 단순하지는 않습니다. app.js의 'ngMockE2E'뿐만 아니라 index.html에 angular-mocks.js도 포함시켜야합니다.
관련 문제
- 1. JMockit을 사용한 모의 수업
- 2. 모카를 사용한 글로벌 모의
- 3. Grails 테스트 모의 구성
- 4. RSpec 모의 테스트 콘솔
- 5. 단위 테스트 모의 Rhino의
- 6. GWT 테스트 모의 방법
- 7. 모의 객체 생성자 테스트
- 8. AS3의 MovieClip을 사용한 마우스 포인터 각도
- 9. Unit 모의 WCF 클라이언트 테스트
- 10. 자바 : Mockito 모의 테스트 아마
- 11. 모의 객체 대 테스트 데이터베이스
- 12. CakePHP 유닛 테스트 모의 컨트롤러
- 13. 웹에서 스크립트 삽입을 사용한 자동화 된 테스트
- 14. 계산 된 열에서 tSQLt를 사용한 단위 테스트
- 15. 매핑 된 메서드를 사용한 CakePHP 테스트 동작
- 16. 각도 : 고정식 가구 데이터 모델링 및 테스트
- 17. E2E 테스트에서 ngScenario를로드하는 방법은 무엇입니까?
- 18. 각도
- 19. 모의 테스트 목적으로 모든 DateTime 인스턴스에서 사용 된 시간입니다.
- 20. EmguCV에서 감지 된 선 각도
- 21. Testacular로 단일 E2E 테스트를 실행하는 방법은 무엇입니까?
- 22. 중첩 된 인터페이스 모의
- 23. JUnit을 사용한 테스트 자동화
- 24. POST를 사용한 스칼라 테스트
- 25. mockresourcerequest를 사용한 단위 테스트
- 26. 접근자를 사용한 단위 테스트
- 27. mockito를 사용한 필기 테스트
- 28. NUnit을 사용한 테스트 케이스
- 29. JUnit을 사용한 GUI 테스트
- 30. mockito를 사용한 GWT 테스트
미안하지만, 나는 아무것도 이해하지 못했습니다. – Adelin
"컬 요청"이란 무엇이며 시드 테스트 서버 란 무엇입니까? – Adelin
죄송합니다 - 당신을 고비에서 넘겨 줄만큼 충분히 노력했습니다. curl은 웹 요청을하기위한 명령 행 도구입니다. –