2017-12-09 4 views
4

Ich habe dieses Problem, wenn ich Karma Unit Test habe.ReferenceError: FB ist nicht definiert in Angular 5 Karma Einheit Test

Error Screenshot

Failed: Uncaught (in promise): ReferenceError: FB is not defined

Ich habe bereits hinzugefügt in Datei index.html folgende Skript:

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

Das ist meine auth.service.ts Datei.

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); 
    } 

Wenn ich Unit-Test mache, ist https://connect.facebook.net/en_US/sdk.js Datei überhaupt nicht geladen.

Wie kann ich dieses Problem beheben?

Danke.

+0

Dies ist Skriptcode, den ich in der Datei index.html hinzugefügt habe.

+1

ist dieses Skript Datei über der JS-Hauptdatei hinzugefügt, dh diese Datei sollte hinzugefügt werden, bevor ein Aufruf an das FB-Objekt erfolgt. –

+0

Bitte fügen Sie den Fehler hinzu, den Sie in Ihrer Frage erhalten. Menschen folgen nicht oft Links zu Bildern. – Marcel50506

Antwort

3

Erste benötigen Sie externe JavaScript-Datei in Karma env durch Hinzufügen Testen laden files config in karma.config.js wie folgt vor:

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

Und dann stellen Sie sicher, Ihre Test NICHT INasync Modus durchgeführt wird .

So normal, Tests in Asynchron-Modus wie folgt zusammen:

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

Entfernen Sie einfach async, so dass es wie folgt aussieht:

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

hoffe, dies wird Ihr Problem lösen.

Verwandte Themen