Jasmine testing AngularJs application using angular translate

I have an AngularJs application where I use angular translators and I want to test the functionality.

I have an i18n module that looks like this:

angular.module('i18n', ['pascalprecht.translate'])
.config(['$translateProvider', function($translateProvider) {
    'use strict';

    $translateProvider.useStaticFilesLoader({
        prefix: '/src/resources/languages/',
        suffix: '.lang.json'
    });

    $translateProvider.preferredLanguage('sv');
}]);

I also have a service in this module where I use $ translate.use () to get and set the current language.

I am having trouble trying to verify this. My test file looks like this:

beforeEach(module('i18n'));
it('test', inject(function ($injector, $translate) {
    var i18nService = $injector.get('i18nService');
    console.log('$translate.use(): ', $translate.use());
    console.log('before set: ', i18nService.getLanguage());
    i18nService.setLanguage('en');
    console.log('after set: ', i18nService.getLanguage());
}));

and my conclusion from this:

$translate.use(): undefined
before set: undefined
after set: undefined

If i remove

$translateProvider.useStaticFilesLoader({
    prefix: '/src/resources/languages/',
    suffix: '.lang.json'
});

from my module, exit

$translate.use(): sv
before set: sv
after set: en 

I tried using $ httpBackend, as in these questions:

How to check controllers using Angular Translate initialized in App Config?

How to do unit test with angular translation

but it didn’t work. I am not getting any unexpected request errors, for example in these issues.

Can someone help me with this?

Thank!

+4

Source: https://habr.com/ru/post/1538683/


All Articles