我已经使用 Jasmine 成功测试了 Controller ,但测试服务似乎有点困难。 问题如下:我不知道如何在服务测试中注入(inject)服务。在 Controller 中,我会执行以下操作:
beforeEach(inject(function ($controller, $rootScope) {
// Create a new scope that's a child of the $rootScope
scope = $rootScope.$new();
var storage = {
add: function (key, value) {
},
get: function (key) {
return "value";
}
};
// Create the controller
ctrl = $controller('UserCtrl', {
$scope: scope,
localStorageService: storage,
});
}));
我正在模拟本地存储服务 ( https://github.com/grevory/angular-local-storage )
当我想测试一个也使用 localStorageService 的服务时,我在运行测试时遇到了注入(inject)错误。
服务:
angular.module('starter.trackingservice', [])
.service('TrackingService', function (localStorageService) {
...
服务测试:
...
var trackingService, storage;
beforeEach(inject(function (TrackingService) {
trackingService = TrackingService;
}));
...
有人知道我如何在服务测试中模拟服务吗,在此先感谢!
最佳答案
我通过执行以下操作修复了它:
beforeEach(function () {
module("starter.trackingservice", function ($provide) {
var storage = {
storVal: false,
add: function (key, value) {
storVal = value;
},
get: function (key) {
return storVal;
}
};
$provide.value('localStorageService', storage);
});
inject(function (TrackingService) {
trackingService = TrackingService;
});
});
关于javascript - AngularJS、Jasmine服务测试注入(inject)失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23604096/