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;
};
}
);
を、私はそれのためのユニットテストを書きたいです。私はテストにUserサービスのモックを注入できるようにしたいと思います。
私はドキュメントに示すように、コントローラユニットテストのためにこれを行うことができます:
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で$フィルタで$コントローラを交換するには動作しません、私はフィルタを推測として、角度によって異なって構成されています(つまり、コンストラクタの2番目のパラメータとしてローカルを挿入することはできません。)
誰もこれを遭遇したことはありませんか?