javascript - AngularJS、Jasmine服务测试注入(inject)失败

标签 javascript angularjs testing jasmine

我已经使用 Jasmine 成功测试了 Controller ,但测试服务似乎有点困难。 问题如下:我不知道如何在服务测试中注入(inject)服务。在 Controller 中,我会执行以下操作:

beforeEach(inject(function ($controller, $rootScope) {
    // Create a new scope that's a child of the $rootScope
    scope = $rootScope.$new();

    var storage = {
        add: function (key, value) {

        },
        get: function (key) {
            return "value";
        }
    };

    // Create the controller
    ctrl = $controller('UserCtrl', {
        $scope: scope,
        localStorageService: storage,
    });
}));

我正在模拟本地存储服务 ( https://github.com/grevory/angular-local-storage )

当我想测试一个也使用 localStorageService 的服务时,我在运行测试时遇到了注入(inject)错误。

服务:

angular.module('starter.trackingservice', [])
.service('TrackingService', function (localStorageService) { 
         ...

服务测试:

...
var trackingService, storage;

beforeEach(inject(function (TrackingService) {
    trackingService = TrackingService;
}));
...

有人知道我如何在服务测试中模拟服务吗,在此先感谢!

最佳答案

我通过执行以下操作修复了它:

 beforeEach(function () {

    module("starter.trackingservice", function ($provide) {

        var storage = {
            storVal: false,
            add: function (key, value) {
                storVal = value;
            },
            get: function (key) {
                return storVal;
            }
        };

        $provide.value('localStorageService', storage);
    });

    inject(function (TrackingService) {
        trackingService = TrackingService;
    });
});

关于javascript - AngularJS、Jasmine服务测试注入(inject)失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23604096/

相关文章:

node.js - 在 TFS 上构建想要从 Node.js 测试项目复制可执行文件

javascript - 如何使用 expressjs、reactjs 持久化数据?

unit-testing - Erlang - Eunit 设置函数不运行

javascript - 如何在 Phaser 3 中更改图像的碰撞框形状?

jquery - 为什么 JSON 数据没有立即加载到我的 HTML 页面中?

angularjs - 在 typescript 中将字符串/文本转换为字节数组

javascript - AngularJS - HTTP POST 异步回调未在指定的超时内调用

django - 使用 json 文件在开发服务器中测试文档上传

javascript - 如何获取多个选择框值并插入字符串数组

javascript - 在自动完成 jquery 中设置选项 minLength 3 时它不起作用