【问题标题】:Angular Karma Testing $.cookie角业力测试 $.cookie
【发布时间】:2015-02-06 08:09:32
【问题描述】:

我的注销功能向注销 api 发送请求并清除所有 cookie,从而有效地结束会话。它工作得很好,但是当我在测试中运行该函数时,我得到:

ReferenceError: $ is not defined

我知道这是因为在注销功能中,我尝试通过运行来清除所有 cookie:

for(var cookie in $.cookie()) {
    $.removeCookie(cookie);
}

感谢您的观看!其余代码如下:

控制器

simulatorApp.controller('homeController', function homeController($scope, $http, $cookies, localAPI) {
$scope.logout = function() {
    var logoutRequest = {
        method: 'POST',
        url: localAPI.url + 'auth/logout/',
        headers: requestHeaders
    };
    $http(logoutRequest);
    for(var cookie in $.cookie()) {
        $.removeCookie(cookie);
    }
};

测试

describe('homeController', function() {
    beforeEach(module('simulatorApp'));

    var controller;
    beforeEach(inject(function(_$controller_) {
        controller = _$controller_;
    }));

    var $scope = {};
    beforeEach(inject(function($controller, $httpBackend) {
        $httpBackend.whenPOST("http://0.0.0.0:8000/api/logout/").respond("Good for you");
        controller('homeController', {
            $scope: $scope
        });
        $scope.logout();
        $httpBackend.flush()
    }));
});

【问题讨论】:

  • 您似乎没有将 jquery 注入到您的测试中

标签: javascript angularjs cookies karma-jasmine angular-cookies


【解决方案1】:

$ 是 JQuery 的关键字,所以这里的问题是你的业力运行时不知道 $ 是什么。

karma.conf.js 的文件部分中添加您的 jquery 源将解决此问题。

【讨论】:

  • 好电话!谢谢!
猜你喜欢
  • 2020-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多