【发布时间】:2016-01-18 17:02:22
【问题描述】:
我在通过 Karma 和 Gulp 运行 Jasmine 测试时遇到问题,我正在使用
通过 gulp 任务运行测试return new karma.Server({
configFile: __dirname + '\\karma.conf.js',
singleRun: true
}, done).start();
我的角度依赖注入失败,我得到一个标准的角度unknown provider myProvider 错误。当我将singleRun 属性更改为false 时,大多数单元测试都通过了(尽管有一组仍然失败)。
测试已经(并且仍然)在 Chutzpah 中运行良好。
我已经尝试将我的测试减少到准系统:
var myProvider;
beforeEach(module('MyModule'));
beforeEach(inject(function (_my_) {
myProvider = _my_;
}));
it("exists", function () {
expect(myProvider).not.toBeUndefined();
});
它仍然失败并出现unknown provider myProvider 错误。同样,如果我将singleRun 设置为false,它们运行良好。我试过运行 PhantomJS 和 Chrome,它们都表现出完全相同的行为。
我正在使用 Angular 1.4.7,我在 package.json 中的依赖项看起来像
"dependencies": {
"gulp": "^3.9.0",
"gulp-chug": "^0.4.2",
"gulp-install": "^0.6.0",
"gulp-util": "^3.0.7",
"phantomjs": "^1.9.19",
"jasmine-core": "^2.4.1",
"karma": "^0.13.19",
"karma-jasmine": "^0.3.6",
"karma-phantomjs-launcher": "^0.2.3",
"karma-spec-reporter": "^0.0.23",
"karma-chrome-launcher": "^0.2.2"
}
karma.conf.js:
module.exports = function (config) {
config.set({
frameworks: ["jasmine"],
reporters: ["spec"],
browsers: ["PhantomJS"],
files: [
"./path/to/jquery/jquery-1.11.0.min.js",
"./path/to/angular/angular.js",
"./path/to/angular/angular-route.js",
"./path/to/angular/angular-mocks.js",
// I'm using this path order (app -> modules -> all)
// due to recommendations found on SO
"./path/to/application/app.js",
"./path/to/application/**/*Module.js",
"./path/to/application/**/*.js",
// For now, I'm just running the one test to simplify debugging
"./path/to/tests/myTest.Test.js"
]
});
};
有什么想法吗?
【问题讨论】:
标签: javascript angularjs gulp karma-runner karma-jasmine