Jas*_*ans 1 dependency-injection jasmine angularjs
我正在尝试使用Jamsine对Angular服务进行单元测试,而我仍然坚持如何为该服务注入依赖项.
这是我的app.js
文件,精简到要领:
"use strict";
angular.module("myApp", []);
(function (app) {
app.factory("taskService", function ($http) {
return {
loadTasks: function (callback) {
}
};
});
app.controller("AppController", function ($scope, $http, taskService) {
});
} (angular.module("myApp")));
Run Code Online (Sandbox Code Playgroud)
这是Jasmine测试,再次被剥离到要领:
describe("taskService tests", function () {
var svc = {};
beforeEach(function () {
angular.module("myApp");
// I also tried this, but not luck there either
// angular.module("myApp", ['taskService']);
inject(function (taskService) { // Fails to inject the service.
svc = taskService;
});
});
});
Run Code Online (Sandbox Code Playgroud)
运行测试时,我得到的错误inject
无法解决依赖关系taskService
:
http://docs.angularjs.org/error/$injector:unpr?p0=taskServiceProvider%20%3C-%20taskService
我被困在这里做什么.当运行应用程序本身时,服务注入没有问题,例如
app.controller("AppController", function ($scope, $http, taskService) {
但我不确定如何在测试中手动进行注射.
问题是你需要myApp
使用angular.mocks
非普通角度加载模块.它与注射物质相同,你不能使用平角,你需要angular.mocks
的inject()
所以只需改变:
angular.module("myApp");
Run Code Online (Sandbox Code Playgroud)
对于:
module("myApp");
Run Code Online (Sandbox Code Playgroud)
要么:
angular.mock.module("myApp");
Run Code Online (Sandbox Code Playgroud)
请注意,这module()
只是一个简写angular.mock.module()
干杯.
归档时间: |
|
查看次数: |
1399 次 |
最近记录: |