首页 > 解决方案 > 如何使用酶通过 onClick 测试 redux 操作

问题描述

我尝试用酶测试以下功能。

renderLoginLink(caption) {
return (
  <a href="#" id="lnkAuthenticateWithGoogle" onClick={() => this.props.actions.authenticateWithGoogle()}>
    {caption}
  </a>
);
}

我正在使用它来模拟点击。

let container, store
const mockStore = configureMockStore();
store = mockStore(initialState);
container = mount(<Provider store={store}><Login {...initialState} /></Provider>)
container.find("a#lnkAuthenticateWithGoogle").simulate("click")

我收到this.props.actions未定义的错误。我不确定我错过了什么。

标签: reactjsreduxjestjsenzyme

解决方案


在安装组件时,您需要将操作作为道具提供给它,例如

let container, store
const mockStore = configureMockStore();
store = mockStore(initialState);
const actions = {
     authenticateWithGoogle: jest.fn()
}
container = mount(<Provider store={store}><Login {...initialState} actions={actions}/></Provider>)
container.find("a#lnkAuthenticateWithGoogle").simulate("click")

推荐阅读