javascript - 测试具有多个 Promise 的 Jest 方法

标签 javascript unit-testing jestjs

我正在尝试为我的应用程序中的服务编写测试。

async post(url, params, headers) {
        const csrfToken = await this.getCsrfToken().then(res => res.data);
        headers.headers['X-CSRF-TOKEN'] = csrfToken;
        // console.log(params);
        return this.http.post(url, params, headers);
    }

我遇到的问题是收到数据未定义的错误。我相信这指的是 csrfToken 调用(这只是另一个 API 调用,用于将此 token 附加到 header )。

我不完全确定如何在 Jest 中模拟该常量,以便我实际上可以接听电话。开 Jest 有简单的方法吗?

最佳答案

您不应该尝试模拟常量,而应该模拟 getCsrfToken。尝试这样的事情:

import { getCsrfToken, post } from MyClass

it('should work', () => {
    // mock method on your class
    myMock = jest.fn()
    myMock.mockReturnValueOnce(Promise.resolve({
       data: {
         fakeCsrf
       }
    })
    MyClass.csrfToken = myMock
    post('/test', {}, {})
    expect(...);
});

关于javascript - 测试具有多个 Promise 的 Jest 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51274910/

相关文章:

javascript - 如何使用变量更改图像高度?

javascript - ValidatedMethod 中的 Meteor this.unblock

unit-testing - Grails:使用 Spock 时如何设置默认语言环境?

c# - 如何模拟 HttpContext.User

javascript - Jest - 模拟一个返回 Promise 的 React 组件的依赖

reactjs - 如何模拟 react 自定义钩子(Hook)返回值?

javascript - 在 javascript 中修复此 JSON 对象字符串的最干净方法是什么?

javascript - 每次用户重新加载页面时,让 html5 地理定位请求许可

python - Django 2.2 - 测试用例 - client.logout() 方法不注销用户

reactjs - 在哪里可以找到 Jest __snapshots__ 目录