使用 Jest 在反应中模拟 asyc 函数

时间:2021-06-16 18:44:10

标签: reactjs jestjs mocking

我刚开始反应和开玩笑。 即使在搜索了许多关于此的文章之后,我仍然坚持使用正确的方法来模拟异步函数。 这是我的场景。我正在粘贴给我带来麻烦的代码。我定义了以下函数。我想模拟 getToken() 函数。返回的token是一个字符串。

export async getSignin() {
   const token = await getToken()
   //do something with this token
}

    

export async function getToken(){
    const token =  (await accessToken())
    return token
}

Test code:
it(" returns a valid user ", async () => {
   const getToken = jest
            .fn()
            .mockImplementation(async () => Promise.resolve("abcd"))
   const signedin = await getSignin()
}

当我这样做时,我的期望是代码将使用 getToken 的模拟实现并继续。我得到的是它在 accessToken() 上抛出了一个错误。我对mock的理解是不应该进入到实际的实现中去调用accessToken()

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

fetch-mock 是一个很棒的包,用于在测试文件中模拟 API 请求! http://www.wheresrhys.co.uk/fetch-mock

安装后,在测试文件的 beforeEach 块中,您现在可以模拟来自 API 调用的负载。它看起来像这样:

beforeEach(() => {
   fetchMock.mock('/api/users'/1, { id: 1, name: 'Test User Name', address: 'Test User Address'})
})
相关问题