我是jasmine的新手,我想为下面的内容创建一个测试,我在测试部分创建了代码,但得到了"TypeError: Cannot set property 'username‘of undefined“。
我在apps.js中创建了一个全局命名空间'cp‘,并在服务和控制器中使用了它。
//controller
cp.controller = {};
cp.controller.LoginController = function($scope, $location, $cookies){
$scope.signIn = function(){
$cookies.user = $scope.form.username;
user.set($scope.form.username);
$location.hash( "home" );
}
};
//service
cp.serviceFactory = {};
cp.serviceFactory.user = function user( $cookies){
var userName = $cookies.user;
return{
set: function(name){
userName = name;
},
get: function(){
return userName;
}
}
};
//test script
describe('Cameo Controllers', function() {
describe('LoginController', function(){
var scope, cookies, ctrl, $httpBackend;
beforeEach(module('CameoPaaS'));
beforeEach(inject(function(_$httpBackend_, $rootScope, $controller, $cookies) {
$httpBackend = _$httpBackend_;
// cookies = $cookies.username;
scope = $rootScope.$new();
cookies = scope.$cookies;
ctrl = $controller(cp.controller.LoginController, {$scope: scope, $cookies: cookies});
}));
it('should log the user into the system', function() {
expect(scope.username).toBeUndefined();
scope.form.username = 'me';
scope.signIn();
//expect(user).toBe(undefined);
});
});
});问:我如何在测试脚本中定义和设置$cookies.username的值来避免错误。
发布于 2012-10-14 08:18:40
首先,确保你包含了angular-cookies.js,它们是从1.0.0rc3的主发行版中分离出来的
如果是我,我会将cookie处理封装到一个服务中,然后使用jasmine模拟/监视您的cookie包装器服务实现。您可能会发现this post很有帮助。还有,我找到了这个testing cookies in unit and e2e。我的问题是,它离金属太近了,必须直接使用浏览器cookie。
发布于 2013-11-27 17:21:50
我也遇到了同样的问题,以下是解决方法-
beforeEach(inject(function($cookies){
$cookies.username = 'AngularJs';
}));如果有更好的方法,请提出建议。
https://stackoverflow.com/questions/12862960
复制相似问题