0

I've a custom filter in which I inject a service :

DurationConfig.$inject = ['translationService'];
function DurationConfig(translationService: ITranslationService) {
    translationService.getTranslations([
        'bxdate_a_month',
        'bxdate_months',
        'bxdate_minute',
        'bxdate_future',
        'bxdate_hour',
        'bxdate_past',
        'bxdate_a_year',
        'bxdate_years',
        'bxdate_day',
    ]).then((translations: Common.Translations) => {
        (moment as any).updateLocale("en", {
            relativeTime: {

When I create a unit test using jasmine i have this error :

Error: [$injector:unpr] Unknown provider: translationServiceProvider <- translationService https://errors.angularjs.org/1.7.9/$injector/unpr?p0=translationServiceProvider%20%3C-%20translationService

Here the unit test :

 beforeEach(inject((
            _$filter_: ng.IFilterService,
            _translationService_: Bordeaux.Common.ITranslationService,
            $q: ng.IQService
        ) => {

            translationService = _translationService_;
            translateRetrieveDataDeferred = $q.defer();
            translateRetrieveDataDeferred.resolve(<Bordeaux.Common.Translations>{
                "global_filtering_status_filtered": "Filtered",
                "global_filtering_status_all": "All",
                "global_filtering_title": "Global filtering",
            });

            jasmine.clock().install();
            moment.locale("en");

            durationFilter = _$filter_("duration");
        }));

How can I inject the translationService into the durationFilter?

jonrsharpe
  • 115,751
  • 26
  • 228
  • 437
Vincent Caron
  • 25
  • 1
  • 5

1 Answers1

0

Try this code:

module.filter("DurationConfig", ['translationService', function ($translationService) {
    return function (input) {
        // use your service as $translationService...
    }
}]);

refer to this answer ase well Angularjs custom filter and dependency injection

Mostav
  • 2,203
  • 15
  • 27