angularjs - Jasmine 注入(inject)不起作用

标签 angularjs typescript jasmine karma-runner browserify

所以我有一个 angular 1.5 应用程序,我用 Typescript 编译,然后通过 Browserify 捆绑它。

现在,当我想用​​ Karma 和 Jasmine 测试它时,只要我想注入(inject)一个服务,就会收到一个错误(它在启用了 strict-di 的浏览器中工作正常)。

有人看到错误在哪里吗?

缓存服务测试.ts

import {CacheService} from "../../../app/services/CacheService";
import {Application} from "../../../app/Application";

describe("AppComponent", () => {
    beforeEach(() => {
        angular.mock.module(Application.name);
    });

    it("should contain CacheService", () => {
        inject((CacheService:CacheService) => {
            console.log(CacheService);
        });
    });
});

karma 配置
module.exports = function (config) {
    config.set({
        // base path that will be used to resolve all patterns (eg. files, exclude)
        basePath: "..",

        // frameworks to use
        // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
        frameworks: ["jasmine", "browserify"],

        // list of files / patterns to load in the browser
        files: [
            "node_modules/angular/angular.js",
            "node_modules/angular-mocks/angular-mocks.js",
            "node_modules/ngLeague/dist/ngLeague.js",
            "node_modules/angular-localforage/dist/angular-localForage.js",
            "app/**/*.ts",
            "tests/unit/**/*.ts",

            // JSON fixture
            {
                pattern:  "tests/fixtures/**/*.json",
                watched:  true,
                served:   true,
                included: false
            }
        ],

        // list of files to exclude
        exclude: [],

        // preprocess matching files before serving them to the browser
        // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
        preprocessors: {
            "app/**/*.ts": ["browserify", "ng-annotate"],
            "tests/unit/**/*.ts": ["browserify", "ng-annotate"],
            "dist/ngCache.js": "coverage"
        },

        // Browserify config
        browserify: {
            debug: true,
            plugin: [
                ["tsify", {target: "ES5"}]
            ]
        },

        // test results reporter to use
        // possible values: "dots", "progress"
        // available reporters: https://npmjs.org/browse/keyword/karma-reporter
        reporters: ["progress", "coverage"],

        coverageReporter: {
            type : "html",
            dir : "tests/coverage/"
        },

        // web server port
        port: 9876,

        // enable / disable colors in the output (reporters and logs)
        colors: true,

        // level of logging
        // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
        logLevel: config.LOG_INFO,

        // enable / disable watching file and executing tests whenever any file changes
        autoWatch: true,

        // start these browsers
        // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
        browsers: ["PhantomJS"],

        // Continuous Integration mode
        // if true, Karma captures browsers, runs the tests and exits
        singleRun: false
    });
};

错误
forEach@/home/kme/Documents/ngCache/node_modules/angular/angular.js:322:24
    loadModules@/home/kme/Documents/ngCache/node_modules/angular/angular.js:4548:12
    createInjector@/home/kme/Documents/ngCache/node_modules/angular/angular.js:4470:30
    workFn@/home/kme/Documents/ngCache/node_modules/angular-mocks/angular-mocks.js:2954:60
    inject@/home/kme/Documents/ngCache/node_modules/angular-mocks/angular-mocks.js:2934:46
    /tmp/fe42636aeb0f927c8dcd9afa7c80f051.browserify:16447:15 <- tests/unit/services/CacheServiceTest.ts:14:15
    /home/kme/Documents/ngCache/node_modules/angular/angular.js:4588:53

最佳答案

localforage 没有加载,废话..

关于angularjs - Jasmine 注入(inject)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37189797/

相关文章:

javascript - 为什么 Jasmine 在监视 $.ajax 时不重置 spy ?

angularjs - 如何在 Jasmine 测试中注入(inject) Controller 依赖项?

javascript - 使用来自 ui-bootstrap 的 tabset 指令时,Angularjs Routing 行为异常

javascript - AngularJS 单元测试 - 未定义不是函数

typescript - ts-mockito-当参数是自定义对象时, stub 方法不起作用

javascript - Angular Observable 订阅回退?

javascript - 您将如何在 TypeScript 中进行模式匹配?

javascript - 创建带有 Angular 变量作为属性值的div

javascript - ui-router 中 ui-sref 属性的动态更改

jasmine - 使用 javascript 测试进行 Visual Studio Online 构建