我正在尝试使用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")));
这是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; }); }); });
运行测试时,我得到的错误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");
对于:
module("myApp");
要么:
angular.mock.module("myApp");
请注意,这module()
只是一个简写angular.mock.module()
干杯.