4

私はジャスミンにかなり慣れていないので、以下のテストを作成したいと思っていました.

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 の値を定義および設定する方法を教えてください。

4

2 に答える 2

2

まず、angular-cookies.js が含まれていることを確認してください。これらは1.0.0rc3でメイン ディストリビューションから分離されました。

私だったら、Cookie 処理をサービスにラップしてから、jasmine を使用して Cookie-Wrapper サービスの実装をモック/スパイします。この投稿が役に立つかもしれません。また、ユニットと e2e でこのテスト Cookieを見つけました。これに関する私見の問題は、金属に近すぎて、ブラウザーの Cookie を直接操作しなければならないことです。

于 2012-10-14T00:18:39.540 に答える