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 $滤波器更换$控制器不工作,因为我相信滤波器由角构造不同(即不允许你注入当地人作为构造函数的第二个参数。)
有没有人遇到过/解决了这个问题?