酶 - 如何测试内组分的初始状态?

时间:2017-02-14 02:01:13

标签: mocha enzyme

我正在安装一个包含其他组件的组件,如下所示:

const wrapper = mount(<IntlProvider><SignUpForm /></IntlProvider>);

组件<SignUpForm />的初始状态应为{errors: {}}。我使用以下断言:

expect(wrapper.find(SignUpForm).state('errors')).to.equal({});

但运行测试时收到以下错误:

  

错误:只能在根

上调用ReactWrapper :: state()

那么,我如何访问<SignUpForm />组件的状态?

1 个答案:

答案 0 :(得分:2)

嗯,你不能用酶来做到这一点(据我所知),但是有一个很好的理由 - 单元测试应该测试应用程序的一些独立部分(在一个测试中从不测试两个部分) )。此Provider实际上是一个组件,因此您尝试测试子组件安装父组件...

同样的问题是当你有组件连接到redux商店时,你可以将它们包装在Provider中,但事实并非如此。您应该将组件与包装版本分开,然后仅测试与第三方/父/兄弟分离的组件。

我从一个文件导出组件和连接组件(两个导出,一个命名,一个默认),在测试中我只导入命名(未连接)组件。我真的不想测试redux提供商;)

//component.jsx
export function MyComp() {}
export default connect()(MyComp)

//component.test.js
import {MyComp} from "./component"

//another component
import MyComp from "./component"