Javascript 如何测试在上调用的服务。http.post的成功
我有一个控制器,它调用一个服务,该服务使用用户名和密码执行http.post。在发布成功后,我调用另一个服务来创建cookie 我“相信”我已经创建了一个成功的Jasmine测试来测试帖子,但不确定接下来如何测试cookie服务 LoginController.js: cookieSrv.js 信号服务: 单元测试:Javascript 如何测试在上调用的服务。http.post的成功,javascript,angularjs,jasmine,karma-jasmine,angular-http,Javascript,Angularjs,Jasmine,Karma Jasmine,Angular Http,我有一个控制器,它调用一个服务,该服务使用用户名和密码执行http.post。在发布成功后,我调用另一个服务来创建cookie 我“相信”我已经创建了一个成功的Jasmine测试来测试帖子,但不确定接下来如何测试cookie服务 LoginController.js: cookieSrv.js 信号服务: 单元测试: describe('Controller: LoginController', function() { beforeEach(module('myApp'));
describe('Controller: LoginController', function() {
beforeEach(module('myApp'));
beforeEach(inject(function($controller, $rootScope, signInService, $httpBackend){
this.$httpBackend = $httpBackend;
this.scope = $rootScope.$new();
$controller('LoginController', {
$scope: this.scope,
localSignInService: signInService
});
}));
describe("successfully logged in", function() {
it("should redirect to home", function() {
var fakeResponse = {
access_token: 'myToken'
}
this.$httpBackend.expectPOST('/api/json/authenticate', {} , function(headers) {
return {
'Content-Type': 'application/json',
'X-app-Username': 'tomcat',
'X-app-Password': 'tomcat'
};
}).respond(200, fakeResponse);
this.scope.LogIn("tomcat","tomcat");
this.$httpBackend.flush();
expect(fakeResponse.access_token).toEqual("myToken");
});
});
});
更新:
根据以上内容,我得到了错误:
ERROR Some of your tests did a full page reload!
一些研究表明,这是因为cookie服务中的window.location.assign。如果我注释掉这一行,测试运行良好,没有上述错误
app.service('signInService', function($http) {
this.authUser = function (usrnm, pwd) {
return $http.post('/api/json/authenticate', {}, {
headers: {
'Content-Type': 'application/json',
'X-app-Username': usrnm,
'X-app-Password': pwd
}
});
};
});
describe('Controller: LoginController', function() {
beforeEach(module('myApp'));
beforeEach(inject(function($controller, $rootScope, signInService, $httpBackend){
this.$httpBackend = $httpBackend;
this.scope = $rootScope.$new();
$controller('LoginController', {
$scope: this.scope,
localSignInService: signInService
});
}));
describe("successfully logged in", function() {
it("should redirect to home", function() {
var fakeResponse = {
access_token: 'myToken'
}
this.$httpBackend.expectPOST('/api/json/authenticate', {} , function(headers) {
return {
'Content-Type': 'application/json',
'X-app-Username': 'tomcat',
'X-app-Password': 'tomcat'
};
}).respond(200, fakeResponse);
this.scope.LogIn("tomcat","tomcat");
this.$httpBackend.flush();
expect(fakeResponse.access_token).toEqual("myToken");
});
});
});
ERROR Some of your tests did a full page reload!