我的login.js代码是
var loginModule = angular.module('loginModule', [])
.controller('LoginCtrl', function ($scope, $auth, $location) {
if (!$auth.isAuthenticated()) {
$scope.oneAtATime = true;
$scope.login = function () {
$auth.login({userName: $scope.username, password: $scope.password, isEncript: false})
.then(function () {
console.log($auth.getMessage());
})
.catch(function (response) {
console.log(response);
});
};
}
else {
$location.path('/home');
}
$scope.status = 'true';
});
和单元测试代码是
describe('login()', function() {
it('should be able to handle login errors', function () {
var user = {
email: 'foo@bar.com',
password: '1234',
isEncript: false
};
this.$httpBackend.expectPOST('app/controller/apicall.php?serviceName=login').respond(200);
this.$auth.login(user).then(angular.noop, function () {
});
this.$httpBackend.flush();
expect(user.isEncript).toBe(false);
});
});
});
......................我得到的错误低于............... ........................
$auth login() should be able to handle login errors FAILED
Error: Unexpected request: POST ../../controller/apicall.php?serviceName=login
Expected POST /app/controller/apicall.php?serviceName=login
帮我解决如何解决这个错误。
答案 0 :(得分:0)
正在调用
../../controller/apicall.php?serviceName=login
你可以解决这个问题,或者只是改变你的
this.$httpBackend.expectPOST('app/controller/apicall.php?serviceName=login').respond(200);
到
this.$httpBackend.expectPOST('../../controller/apicall.php?serviceName=login').respond(200);
那应该这样做。
答案 1 :(得分:0)
此错误表示您的$ auth服务向其他URL发送请求。 因此,首先您需要检查并测试您的$ auth服务,当您拨打“登录”时,该服务会是什么?方法
测试的更好方法是为$ auth服务设置单独的套件(在那里测试它与后端的交互方式)和LoginCtrl控制器(在这里你将模拟$ auth服务并仅测试控制器的行为)
您可以使用此plunker http://tinyurl.com/lv3gskf作为示例。 (我使用tinyurl.com,因为stackoverflow不允许在没有代码的情况下发布链接到plunker)