Jasmine和angularjs,在茉莉花中使用$cookies

前端之家收集整理的这篇文章主要介绍了Jasmine和angularjs,在茉莉花中使用$cookies前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我对茉莉是个新手,想要为下面的代码创建一个测试,我在测试部分创建了代码,但是我得到了“TypeError:无法设置未定义的属性用户名’”..

我在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的值以解决错误.

解决方法

首先请确保您包含angular-cookies.js,它们在 1.0.0rc3与主发行版分开

如果是我,我会将cookie处理包装到服务中,然后使用jasmine来模拟/监视你的cookie-wrapper服务实现.你可能会发现this post很有帮助.此外,我发现这testing cookies in unit and e2e.恕我直言,这是因为它太靠近金属,不得不直接使用浏览器cookie.

猜你在找的Angularjs相关文章