javascript - 开 Jest 玩 Redux Action

标签 javascript reactjs unit-testing redux jestjs

我正在尝试使用jest 实现快照,但我遇到了问题。解决方案可能很简单,但我找不到。

LoginForm.js

class LoginForm extends React.Component {
    constructor(props) {
        super(props)
        }
    }
    componentWillMount(){
        this.props.startSpinner()
    }
    render(){
        return(....)
    }
}

LoginForm.spec.js

it('should render snapshot', () => {
    const component = renderer.create(
            <LoginForm />
    )
    const tree = component.toJSON()
    expect(tree).toMatchSnapshot()
})

startSpinner Action

export function startSpinner() {
    return (dispatch) => {
        dispatch({
            type: 'WINDOW_START_SPINNER',
        })
    }
}

当我运行测试时,它抛出这个错误,不仅是这个 Action ,而且所有函数都被称为 redux Action 。

TypeError: this.props.startSpinner is not a function

我怎样才能让 jest 与这个 redux Action 配合得很好?

最佳答案

我会单独测试 redux 功能,并将 startSpinner 作为模拟函数传入。

例如:

const mockFn = jest.fn()
const component = renderer.create(
   <LoginForm startSpinner={mockFn} />
)
expect(mockFn.toHaveBeenCalled()).toBe(true)

关于javascript - 开 Jest 玩 Redux Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46602213/

相关文章:

javascript - 将对象添加到 localStorage。 JSON

javascript - 如何让 clearInterval() 在 JavaScript 中循环工作

javascript - ModelService.Filtered 不返回移动设备上的数据

node.js - 使用 Jest(和 mockgoose)测试 Node.js API

c# - 如何在c#中使用moq.mock模拟调用静态类的方法

javascript - 应用程序找不到 wrapbootstrap js 和图像文件

javascript - 如何修复警告 "function -- makes the dependencies of useEffect Hook change on every render"?

javascript - 单击表单字段时显示额外的文本 - react

javascript - React Router - 刷新后保持在同一页面

使用 robolectric 进行 Android gradle 测试