9
我有一個簡單angularjs過濾器(它需要一個ID,並將其轉換爲一個名稱字符串),依賴於定製服務來完成工作:如何將模擬服務注入到過濾器的單元測試中?
angular.module('app').filter('idToName',
function(User) {
return function(id) {
var result, user;
result = '';
if (id) {
result = 'no name found';
user = User.getById(id);
if (user) {
result = user.firstName;
}
}
return result;
};
}
);
,我想爲它編寫單元測試。我希望能夠將用戶服務的模擬注入到測試中。
我能爲控制器單元測試爲此如圖文檔中:
var mockUserService;
mockUserService = {
getById: function(id) {
return {
firstName: 'Bob'
};
}
};
beforeEach(inject(function($rootScope, $controller) {
var ctrl, scope, userService;
userService = mockUserService;
scope = $rootScope.$new();
return ctrl = $controller('someController', {
$scope: scope,
User: userService
});
}));
但在beforeEach $濾波器更換$控制器不工作,因爲我相信濾波器由角構造不同(即不允許你注入當地人作爲構造函數的第二個參數。)
有沒有人遇到過/解決了這個問題?