我正在尝试使用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")));
这是茉莉花测试,再次被剥夺了基本要素:
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;
});
});
});
运行测试时,我收到inject
无法解决taskService
依赖项的错误:
http://docs.angularjs.org/error/$injector:unpr?p0=taskServiceProvider%20%3C-%20taskService
我被困在这里做什么。当运行应用程序本身时,服务注入没有问题,例如
app.controller("AppController", function ($scope, $http, taskService) {
但我不确定如何在测试中手动进行注射。
答案 0 :(得分:7)
问题是您需要使用myApp
加载模块angular.mocks
而不是普通的角度。它与注入东西相同,你不能使用普通角度,你需要angular.mocks
的{{1}}
所以只需改变:
inject()
有:
angular.module("myApp");
或:
module("myApp");
请注意,angular.mock.module("myApp");
只是module()
干杯。