Reactjs jsdom:无法读取属性'_地点';空的
当我通过jest测试epic时,我的测试失败了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
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
时遇到了这个问题
我在应用程序代码的这一部分添加了一个条件,之后我的测试运行良好
确保应用程序代码而不是测试代码正在尝试仅访问测试环境中存在的元素