Có ai có ý tưởng làm thế nào để giả lập $ httpBackend trong các thử nghiệm e2e góc? Ý tưởng này đang xâu chuỗi các yêu cầu XHR trong khi chạy thử nghiệm trên travis-ci. Tôi đang sử dụng nghiệp lực cho tài sản proxy và partials từ ứng dụng đường ray của tôi chạy trên chuyến đi. Tôi muốn thực hiện kiểm tra chấp nhận mà không cần truy vấn DB thực.
Dưới đây là một phần của tập tin cấu hình nghiệp của tôi:
...
files = [
MOCHA,
MOCHA_ADAPTER,
'spec/javascripts/support/angular-scenario.js',
ANGULAR_SCENARIO_ADAPTER,
'spec/javascripts/support/angular-mocks.js',
'spec/javascripts/e2e/**/*_spec.*'
];
...
proxies = {
'/app': 'http://localhost:3000/',
'/assets': 'http://localhost:3000/assets/'
};
...
Dưới đây là một phần của tập tin spec của tôi:
beforeEach(inject(function($injector){
browser().navigateTo('/app');
}));
it('should do smth', inject(function($rootScope, $injector){
input('<model name>').enter('smth');
//this is the point where I want to stub real http query
pause();
}));
Tôi đã cố gắng để nhận được $ httpBackend dịch vụ thông qua $ injector:
$injector.get('$httpBackend')
Nhưng đây không phải là cái được sử dụng bên trong khung nội tuyến nơi các thử nghiệm của tôi chạy.
Các thử hôm sau tôi đã được sử dụng angular.scenario.dsl, đây là mã samle:
angular.scenario.dsl('mockHttpGet', function(){
return function(path, fakeResponse){
return this.addFutureAction("Mocking response", function($window, $document, done) {
// I have access to window and document instances
// from iframe where my tests run here
var $httpBackend = $document.injector().get(['$httpBackend']);
$httpBackend.expectGET(path).respond(fakeResponse)
done(null);
});
};
});
Cách sử dụng Ví dụ:
it('should do smth', inject(function($rootScope, $injector){
mockHttpGet('<path>', { /* fake data */ });
input('search.name').enter('mow');
pause();
}));
Điều này dẫn đến lỗi sau:
<$httpBackend listing> has no method 'expectGET'
Vì vậy, tại thời điểm này tôi không có ý tưởng về bước tiếp theo. Có ai đã cố gắng làm một cái gì đó như thế này, là loại stubbing thực sự có thể?
cách cấu hình nghiệp của bạn để có chức năng "tiêm" trong thông số của bạn? Tôi tiếp tục nhận được ReferenceError cho các bài kiểm tra của tôi – wakandan