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 次 |
| 最近记录: |