2017-04-03 5 views
0

jest経由で叙事詩をテストすると、テストに失敗します。jsdom:nullの '_location'プロパティを読み取れません

Test Failed 
/.../node_modules/jsdom/lib/jsdom/browser/Window.js:148 

return idlUtils.wrapperForImpl(idlUtils.implForWrapper(window._document)._location); 

TypeError: Cannot read property '_location' of null 
    at Window.get location [as location] (/.../node_modules/jsdom/lib/jsdom/browser/Window.js:148:79) 
    at Timeout.callback [as _onTimeout] (/.../node_modules/jsdom/lib/jsdom/browser/Window.js:525:40) 
    at ontimeout (timers.js:380:14) 
    at tryOnTimeout (timers.js:244:5) 
    at Timer.listOnTimeout (timers.js:214:5) 

これは私のテストの一部です。私はfetch()を使用し、fetchCategoriesEpicで約束しました。

it('test epic',() => { 
    ... 
    const action$ = ActionsObservable.of({ type: FETCH_CATEGORIES }) 

    fetchCategoriesEpic(action$) 
     .toArray() // collects everything in an array until our epic completes 
     .subscribe((actions) => { 
     expect(actions).toEqual([ 
      { type: FETCH_CATEGORIES }, 
      { type: FETCH_CATEGORIES_SUCCESS, payload: List(payload.data).map((category) => new Category(category)) } 
     ]) 
     }) 
    ... 
} 

どうすればこの問題を解決できますか?

答えて

0

この問題は実際にjsdomのみに関連しており、還元的に観測可能ではない ではないので、タイトル、説明、タグを変更することができます。おそらく、テストにjsdomの設定/使用法や、使用しているノードのバージョンを含めたいと思うでしょう。

Others have reportedこれまで同様の問題はありましたが、すばらしいGoogle検索ではわかりやすい解決策はありません。私の直感はあなたの設定が少しオフであると私に教えてくれるだろうし、それはあなたのために偽の場所オブジェクトを作成する必要があることを認識していない。

0

documentが未定義の環境でテストしているときにdocument.documentElementを使用しようとすると、この問題が発生しました。

私はアプリケーションコードのその部分に条件付きを追加し、それ以降はテストをうまく実行しました。

テストコードではなくアプリケーションコードが、テスト環境に存在する要素のみにアクセスしようとしていることを確認してください。

関連する問題