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 ответ:
Сначала вам нужно загрузить внешний 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(); }));
Надеюсь, что это решит вашу проблему.