ReferenceError: FB не определен в угловом тесте 5 Karma Unit


У меня есть эта проблема, когда у меня есть модульный тест кармы.

Скриншот Ошибки

Failed: Uncaught (in promise): ReferenceError: FB не определен

Я уже добавил следующий скрипт в индекс.html-файл:

<script type="text/javascript" src="https://connect.facebook.net/en_US/sdk.js"></script>

Это мой файл auth.service.ts.

constructor(
    private http: HttpClient,
    private fb: FacebookService
  ) {
    this.token = localStorage.getItem('token');

    if (this.token) this.isLoggedIn = true;
    else this.isLoggedIn = false;

    let initParams: InitParams = {
      appId: environment.FACEBOOK_APP_ID,
      xfbml: true,
      version: 'v2.8'
    };

    fb.init(initParams);
  }

Когда я делаю модульный тест, https://connect.facebook.net/en_US/sdk.js файл не загружается вообще.

Как я могу решить эту проблему?

Спасибо.

1 4

1 ответ:

Сначала вам нужно загрузить внешний javascript-файл в Karma testing env, добавив files config в karma.config.js следующим образом:

files: [
      'https://connect.facebook.net/en_US/sdk.js'
    ],
crossOriginAttribute: false,

А затем Убедитесь, что ваш тест выполнен не в async режим.

Поэтому обычно тестирование выполняется в асинхронном режиме, как показано ниже:

it('should create the app', async(() => {
    const fixture = TestBed.createComponent(AppComponent);
    const app = fixture.debugElement.componentInstance;
    expect(app).toBeTruthy();
  }));

Просто удалите async, чтобы это выглядело следующим образом:

it('should create the app', (() => {
    const fixture = TestBed.createComponent(AppComponent);
    const app = fixture.debugElement.componentInstance;
    expect(app).toBeTruthy();
  }));

Надеюсь, что это решит вашу проблему.