测试具有多个承诺的Jest方法

时间:2018-07-10 22:45:02

标签: 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调用)。

我不太确定如何在玩笑中模拟该常量,这样我才能真正开始求职。开玩笑有什么简单的方法吗?

1 个答案:

答案 0 :(得分:1)

您不应该尝试模拟常量,而应该模拟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(...);
});