2017-12-09 51 views
4

カルマユニットテストをしているときにこの問題があります。 ReferenceError:Angular 5カルマユニットテストでFBが定義されていません

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

Error Screenshot

は、私はすでにのindex.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ファイルがまったく読み込まれません。

この問題を解決するにはどうすればよいですか?

ありがとうございました。

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

そしてをあなたのテストをasync INモードNOTを行っていることを確認してください:あなたは、次のようにkarma.config.jsfiles設定を追加することにより、ENVをテストカルマに外部のJavaScriptファイルをロードする必要があり

+0

これはindex.htmlファイルに追加したスクリプトコードです。

+1

はこのスクリプトですメインJSファイルの上に追加されたファイルです。つまり、FBオブジェクトを呼び出す前にこのファイルを追加する必要があります。 –

+0

質問に記載されているエラーを追加してください。人々はしばしば画像へのリンクをたどらない。 – Marcel50506

答えて

3

まず

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

が、これはあなたの問題を解決することを願っています。

関連する問題