ngx-translate / core

The internationalization (i18n) library for Angular
MIT License
4.48k stars 570 forks source link

ng2-translate unit test issue : assets/i18n/undefined.json #697

Open liliom55 opened 6 years ago

liliom55 commented 6 years ago

@ocombe I'm testing a angular CLI project which uses ng2-translate module. I'm not testing the translate staff but I get the error below when I run ng test:

Current behavior 404 Not Found for URL: http://localhost:9876/assets/i18n/undefined.json

Expected/desired behavior URL: http://localhost:9876/assets/i18n/en.json

Reproduction of the problem this is my spec file

import { async, ComponentFixture, TestBed ,inject} from '@angular/core/testing';
import { By } from '@angular/platform-browser';
import { DebugElement, NO_ERRORS_SCHEMA } from '@angular/core';

import { HomeComponent } from './home.component';
import { HomeRoutingService } from './home-routing/home-routing.service';
import { ClientService } from '../shared/clients/client.service';

import { TranslateModule, 
  TranslateStaticLoader, 
  TranslatePipe, 
  TranslateLoader, 
  TranslateService
} from 'ng2-translate';
import { Http } from '@angular/http';

export function createTranslateLoader(http: Http) {
  return new TranslateStaticLoader(http, 'assets/i18n', '.json');
}
describe('HomeComponent', () => {
  let component: HomeComponent;
  let fixture: ComponentFixture<HomeComponent>;
  let de: DebugElement;
  let el: HTMLElement;
  let translate:TranslateService;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [HomeComponent],
      schemas: [NO_ERRORS_SCHEMA],
      imports: [TranslateModule.forRoot({
        provide: TranslateLoader,
        useFactory: (createTranslateLoader),
        deps: [Http]
      })],
      providers: [HomeRoutingService, ClientService,TranslateService]
    }).compileComponents();

  }));
  beforeEach(inject([TranslateService], (service) => {
    translate = service;
    translate.use('en');
  }));
  beforeEach(() => {
    fixture = TestBed.createComponent(HomeComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });
.
.
.
});

What is the motivation / use case for changing the behavior? even I change it (in spec file) to

export function createTranslateLoader(http: Http) {
  return new TranslateStaticLoader(http, 'base/assets/i18n', '.json');
}

I get 404 Not Found for URL: http://localhost:9876/base/assets/i18n/en.json

Please tell us about your environment:

node: 6.11.2
os: win32 x64
jotatoledo commented 6 years ago

Isnt that a different lib?