Mam prosty filtr angularjs (trwa id i konwertuje go na ciąg nazwy), który zależy od usługi niestandardowe, aby zrobić swoją pracę:Jak mogę wstrzyknąć próbną usługę do testu jednostkowego dla filtra?
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;
};
}
);
i chcę napisać badanej jednostki dla niego . Chciałbym móc wstrzyknąć próbkę usługi User do testu.
można zrobić to za pomocą testów jednostkowych kontroler jak pokazano w dokumentacji:
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
});
}));
ale zastępując $ kontroler z $ filtra w beforeEach nie działa, jak przypuszczam, filtry są skonstruowane inaczej kątowe (tzn. nie pozwalaj na wstrzykiwanie locals jako drugiego parametru do konstruktora.)
Czy ktoś już kiedyś to odkrył/rozwiązał?