嘿嘿我解决单元测试登录角度JS
hep me to solve unit testing login angularJS
我的登录代码.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
帮助我解决我应该如何解决此错误。
有东西在召唤
../../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);
这应该可以做到。
此错误表示您的$auth服务将请求发送到其他 URL。因此,首先您需要检查并测试当您调用其"登录"方法时,您的$auth服务做什么。
更好的测试方法是为$auth服务(您将在其中测试它如何与后端交互)和 LoginCtrl 控制器(您将在其中模拟$auth服务并仅测试控制器的行为)使用单独的套件。
您可以使用此 plunker http://tinyurl.com/lv3gskf 为例。(我使用 tinyurl.com 因为堆栈溢出不允许在没有代码的情况下发布指向 plunker 的链接)
相关文章:
- 在node.js中编写单元测试的最佳方式是什么
- 使用Node.js在应用程序引擎上进行本地单元测试
- 我应该如何衡量JS的单元测试覆盖率?我可以'我对jscoverage不满意
- 在http服务单元测试中使用request-js时,chai.request不是一个函数
- 如何用mocha和rewire模拟node.js单元测试中的Q方法
- Angular js单元测试模拟文档
- Angular.js中的控制器单元测试
- 是否可以在 js 中为单元测试超时
- VS 2015与Gulp JS单元测试的集成
- 节点.js单元测试:测试fs模块抛出错误时的行为
- node.js单元测试mock依赖关系
- 在mochajavascript node.js单元测试框架中,没有从chai.post请求中得到响应
- Angular.js单元测试不调用$animate.enter回调
- JS单元测试用不同的参数运行多次
- Node.js单元测试
- Angular.js单元测试expectPUT
- Angular.js单元测试指令
- JS单元测试,而不必将整个HTML复制到单元测试中
- 在我的Angular JS单元测试中,我应该在什么时候使用$provide和Jasmine Spies
- 使用Jasmine进行JS单元测试