首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jasmine和angularjs,在jasmine中使用$cookies

Jasmine和angularjs,在jasmine中使用$cookies
EN

Stack Overflow用户
提问于 2012-10-13 00:00:55
回答 2查看 6.4K关注 0票数 4

我是jasmine的新手,我想为下面的内容创建一个测试,我在测试部分创建了代码,但得到了"TypeError: Cannot set property 'username‘of undefined“。

我在apps.js中创建了一个全局命名空间'cp‘,并在服务和控制器中使用了它。

代码语言:javascript
复制
//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的值来避免错误。

EN

回答 2

Stack Overflow用户

发布于 2012-10-14 08:18:40

首先,确保你包含了angular-cookies.js,它们是从1.0.0rc3的主发行版中分离出来的

如果是我,我会将cookie处理封装到一个服务中,然后使用jasmine模拟/监视您的cookie包装器服务实现。您可能会发现this post很有帮助。还有,我找到了这个testing cookies in unit and e2e。我的问题是,它离金属太近了,必须直接使用浏览器cookie。

票数 2
EN

Stack Overflow用户

发布于 2013-11-27 17:21:50

我也遇到了同样的问题,以下是解决方法-

代码语言:javascript
复制
beforeEach(inject(function($cookies){
    $cookies.username = 'AngularJs'; 
}));

如果有更好的方法,请提出建议。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12862960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档