首页 > 解决方案 > 如何使用开玩笑酶查找推断类型

问题描述

我有一个包裹在 a 中的组件,Provider我使用 Enzyme mount 来测试它。我想在使用时推断类型,wrapper.find以便我可以访问组件状态并拥有所有类型。这是我正在运行的代码示例:

const wrapper = mount<Provider>(
  <Provider mocks={mocks}>
    <MyComponent
      foo={bar}
    />
  </Provider>
);

const MyComponentInstance = wrapper.find("MyComponent").instance();

expect(MyComponentInstance.state.isBar).toBe(true);

MyComponentInstance是我想获得类型推断的地方,所以我以后可以调用MyComponentInstance.state.isBar.

MyComponent State类型是这样定义的:

type State = {
  isBar: boolean
}
export class MyComponent extends Component {
  public state : State = {
    isBar: false
  }
}

标签: javascripttypescriptjestjsenzyme

解决方案


根据文档,您还可以通过构造函数找到组件。因此,您可能想尝试以下方法:

const wrapper = mount<Provider>(
  <Provider mocks={mocks}>
    <MyComponent
      foo={bar}
    />
  </Provider>
);

const MyComponentInstance = wrapper.find(MyComponent).instance();

expect(MyComponentInstance.state.isBar).toBe(true);

TypeScript 现在应该能够推断类型,但这是否有效取决于您使用的类型定义。


推荐阅读