Ben*_*Ben 10 javascript testing reactjs jestjs enzyme
所以我将类组件中使用的导入转换为React.lazy import api并将其包装在Suspense标记中.当我测试该类组件时,酶会引发错误"Enzyme Internal Error: unknown node with tag 13"
.有没有办法渲染和测试延迟加载的组件的安装而不是使用浅渲染?
我已经尝试过异步等待,直到延迟加载的承诺得到解决,但这两者都不起作用,如下所示:
it('async await mount', () async () => {
const wrapper = await mount(<Component />)
}
Run Code Online (Sandbox Code Playgroud)
这是示例代码:
import React, { PureComponent, Suspense } from 'react'
const ChildComponent = React.lazy(() => import('../ChildComponent'))
export default class Component extends PureComponent {
constructor() {
super()
this.state = {
example: null
}
}
doSomething = () => this.setState({
example: 'example'
})
render() {
return (
<div>
<p>Example</p>
<Suspense fallback={<div>...loading</div>}>
<ChildComponent
example={this.state.example}
doSomething={this.doSomething}
/>
</Suspense>
</div>
)
}
}
Run Code Online (Sandbox Code Playgroud)
import React from 'react'
import renderer from 'react-test-renderer'
import { mount } from 'enzyme'
import Component from '../../Component'
describe('Component', () => {
// snapshot renders loading and not children
it('example snapshot of tree', () => {
const tree = renderer.create(<Component />).toJSON()
expect(tree).toMatchSnapshot()
})
it('example mount test', () => {
// this test fails and throws error I state above
const wrapper = mount(<Component />)
wrapper.setState({ example: 'example' })
expect(wrapper.state.example).toBe('example')
})
})
Run Code Online (Sandbox Code Playgroud)
我读了酶不支持阵营16.6悬念API,但是我想知道是否仍有测试安装,所以我可以用的东西喜欢的方式simulate
和find
API的酶.
ChuckJHardy 链接的 GitHub 问题已解决并合并并发布。从 1.14.0 开始,您现在可以在酶中使用安装 API。
https://github.com/airbnb/enzyme/pull/1975
归档时间: |
|
查看次数: |
1332 次 |
最近记录: |