【问题标题】:Jasmine and angularjs, using $cookies in jasmineJasmine 和 angularjs,在 jasmine 中使用 $cookies
【发布时间】:2012-10-03 11:58:24
【问题描述】:

我是 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 的值来绕过错误。

【问题讨论】:

    标签: cookies jasmine


    【解决方案1】:

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

    beforeEach(inject(function($cookies){
        $cookies.username = 'AngularJs'; 
    }));
    

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-04
        • 1970-01-01
        • 2017-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-04
        相关资源
        最近更新 更多