当单元测试Angular工厂(使用Karma + Jasmine)时,如何将存根依赖注入到被测工厂中?
这是我的工厂:
mod = angular.module('myFactoryMod', []);
mod.factory('myFactory', [
'$log', 'oneOfMyOtherServices', function($log, svc) {
return makeSomethingThatDoesSomethingWithTheseDependencies($log, svc);
}
]);
Run Code Online (Sandbox Code Playgroud)
oneOfMyOtherServices 实例化我的工厂时需要.
这是我的测试:
it('can get an instance of my factory', function() {
var oneOfMyOtherServicesStub;
angular.mock.module('myFactoryMod');
oneOfMyOtherServicesStub = {
someVariable: 1
};
//****How do I get my stub in my target? ****
angular.mock.inject(['myFactory', function(target) {
expect(target).toBeDefined();
}
]);
})
Run Code Online (Sandbox Code Playgroud)
NB我知道这$controller允许控制器,但我没有看到工厂的等价物.
我正在尝试使用Jasmine规范文件对Angular服务进行单元测试.这需要加载模块.这是一个简单的规范,旨在简单地加载Angular模块:
describe('Submission services', function () {
it('Finds angular', function () {
module('submissionServices');
});
});
Run Code Online (Sandbox Code Playgroud)
当我运行Jasmine时,会导致以下错误
Running Jasmine specs...
FAIL: 1 test, 1 failure, 0.004 secs.
Submission services Finds angular. (/Users/XXX/Projects/globe_town/spec/javascripts/SubmissionsSpec.js:3)
ReferenceError: Can't find variable: module
Test ordering seed: --seed 1826
rake aborted!
Jasmine::Headless::TestFailure
Run Code Online (Sandbox Code Playgroud)
jasmine.yml文件包含
src_files:
- public/javascripts/jquery.js
- spec/javascripts/lib/angular/angular.js
- spec/javascripts/lib/angular/angular-resource.js
- app/assets/javascripts/services/submissions.js
stylesheets:
- stylesheets/**/*.css
helpers:
- helpers/**/*.js
spec_files:
- '**/*[sS]pec.js'
src_dir:
spec_dir: spec/javascripts
Run Code Online (Sandbox Code Playgroud)
该软件的版本是:
我需要做些什么才能让Jasmine找到Angular?