Я хочу провести интеграционный тест с реальными обращениями к моему серверу, поэтому я не хочу использовать модуль $httpBackend из angular-mocks, поэтому я пробую следующее:
beforeEach(inject(function($rootScope,_MembersDataSvc_){
service = _MembersDataSvc_;
}));
it('test',function(done){
service.me().then(function(){done();});
});
А сервис такой:
function me() {
return $http
.get('urlBase/me')
.then(meSuccess);
function meSuccess(response) {
return response.data.members[0];
}
}
Это никогда не вызывает $ http, кажется, что angular-mocks переопределяет службу $ http и никогда не делал вызов.
Некоторые идеи?
ИЗМЕНИТЬ 1:
Согласно этому сообщению: http://base2.io/2013/10/29/conditionally-mock-http-backend/
вы можете сделать passThrough для этих вызовов $http, которые вы не хотите издеваться, поэтому попробуйте следующее:
var service;
var scope;
var $httpBackend;
beforeEach(inject(function($rootScope,_MembersDataSvc_,_$httpBackend_){
service = _MembersDataSvc_;
scope = $rootScope.$new();
$httpBackend = _$httpBackend_;
}));
it('test',function(done){
//this.timeout(10000);
$httpBackend.whenGET(/views\/\w+.*/).passThrough();
$httpBackend.whenGET(/^\w+.*/).passThrough();
$httpBackend.whenPOST(/^\w+.*/).passThrough();
service.me().then(function(response){console.log(response);done();});
scope.$apply();
//service.getDevices(member).then(function(response){console.log(response);done();})
});
Но passThrough здесь не определен.
РЕДАКТИРОВАТЬ 2:
Я прочитал этот пост: http://blog.xebia.com/2014/03/08/angularjs-e2e-testing-using-ngmocke2e/, но я полагаю, что это отдельный тест ??, я хочу запустить его с кармой и жасмином.
Это весь мой тест.
describe('integration test', function () {
beforeEach(function () {
module('MyAngularApp');
});
var service;
var scope;
var $httpBackend;
beforeEach(inject(function($rootScope,_MembersDataSvc_,_$httpBackend_){
service = _MembersDataSvc_;
scope = $rootScope.$new();
$httpBackend = _$httpBackend_;
}));
it('test for test',function(done){
$httpBackend.whenGET(/views\/\w+.*/).passThrough();
$httpBackend.whenGET(/^\w+.*/).passThrough();
$httpBackend.whenPOST(/^\w+.*/).passThrough();
service.me().then(function(response){console.log(response);done();});
scope.$apply();
});
});
ngMock
во время тестирования E2E. Этот модуль переопределит службу $http по умолчанию. В тестах E2E работают стандартные http-вызовы. - person Chandermani   schedule 14.05.2015