reactjs - 开 Jest jest.fn 它正在被调用,但期望失败

标签 reactjs typescript jestjs enzyme ts-jest

我是开 Jest 测试的新手,我写了下面的测试。 我 Jest mock 了一个函数并将其作为参数传递。 但是当运行测试时,在日志中我可以看到函数 onSuccess 被调用。 但 expect 失败并出现代码下方的错误。

我应该如何断言调用了 onSuccess = jest.fn()?

测试

 it('should create product correctly', async () => {
            const store = mockStore()
            const onSuccess = jest.fn(() => console.log("I was called"))
            const onError = jest.fn()
            const CreateProductApiMock = CreateProductApi as jest.Mock
            const productRequest = {id: 1} as Product

            CreateProductApiMock.mockResolvedValue(Promise.resolve({
                data: "any"
            } as AxiosResponse<string>))


            await store.dispatch(createProduct(productRequest, onSuccess, onError, "jwt"))
            expect(CreateProductApiMock).toHaveBeenCalledWith({"id": 1}, "jwt")
            expect(onSuccess).toHaveBeenCalledTimes(1)
        })

日志:

console.log src/__tests__/components/product/product-slice.test.ts:133
    I've was called


Error: expect(jest.fn()).toHaveBeenCalledTimes(expected)

Expected number of calls: 1
Received number of calls: 0

最佳答案

模拟 dispatch 怎么样?然后调用您的操作并检查是否被调用,例如:

const dispatch = jest.fn();
await createProduct(productRequest, onSuccess, onError, "jwt")(dispatch);
expect(dispatch).toHaveBeenCalledTimes(1);
expect(dispatch).toHaveBeenCalledWith({"id": 1}, "jwt");

关于reactjs - 开 Jest jest.fn 它正在被调用,但期望失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66392267/

相关文章:

reactjs - react Webpack。为什么从子组件调用函数时会出现错误?

javascript - React Hooks 是否比 Class Components 使用更多内存?

javascript - tslint - 最后一行缺少尾随逗号 (trailing-comma)

typescript - 为什么 VS2015 Typescript 示例项目包含内容文件?

reactjs - 如何模拟模块中的特定功能

reactjs - 如何更改 react 引导模式的背景颜色

javascript - 将 base64 数据保存到变量中

javascript - Angular2 表在过滤后无法正确构建

reactjs - React 测试库元素标题未定义

jestjs - 如何在VSTS测试中发布Jest单元测试结果?