用酶测试时如何键入组件实例?

时间:2018-09-11 13:08:09

标签: reactjs typescript jestjs enzyme

鉴于我有一个像这样的组件

config.vm.synced_folder "~/project/storage", "~/project/storage", 
owner: "www-data", group: "www-data"

我应该在酶中添加哪种类型的实例?

interface IState {
  foo
}

interface IProps {
  bar
}

export class MyComp extends Component<IProps, IState> {
  state = {
    foo: 'cool'
  }
}

1 个答案:

答案 0 :(得分:0)

The return type of the shallow is generic。因此,您可以传递PropsState的类型。

const componentTree: ShallowWrapper<IProps, IState> = shallow(<MyComponent {...props}/>);   
const instance = componentTree.instance(); 
expect(instance.state.foo).toBe(bar);

酶提供了一种访问组件状态的API方法,因此您可以按照以下方法在ShallowWrapper上直接使用该方法来访问组件状态,

const componentTree: ShallowWrapper<IProps, IState> = shallow(<MyComponent {...props}/>); 
expect(componentTree.state().foo).toBe(bar);

以上两种方法都可以。