Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs jsdom:无法读取属性'_地点';空的_Reactjs_Unit Testing_Jestjs_Jsdom - Fatal编程技术网

Reactjs jsdom:无法读取属性'_地点';空的

Reactjs jsdom:无法读取属性'_地点';空的,reactjs,unit-testing,jestjs,jsdom,Reactjs,Unit Testing,Jestjs,Jsdom,当我通过jest测试epic时,我的测试失败了 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 l

当我通过jest测试epic时,我的测试失败了

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)
这是我的一些测试。我在FetchCategoriesPic中使用了fetch()和promise

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)) }
        ])
      })
    ...
}

我该如何解决这个问题呢?

看来这个问题实际上只与jsdom有关,而不是redux observable, 因此,您可能需要更改标题、描述和标签。您可能希望在测试中包括jsdom的任何配置/使用,以及您正在使用的节点版本


过去也有类似的问题,但通过快速的谷歌搜索,我找不到明确的解决方案。我的直觉告诉我,您的配置有点不正确,它没有意识到它应该为您创建一个假位置对象。

在未定义
文档的环境中进行测试时,我在尝试使用
文档.documentElement
时遇到了这个问题

我在应用程序代码的这一部分添加了一个条件,之后我的测试运行良好

确保应用程序代码而不是测试代码正在尝试仅访问测试环境中存在的元素