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

Javascript 测试具有多个承诺的Jest方法,javascript,unit-testing,jestjs,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(u

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

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调用,用于将该令牌附加到头中


我不完全确定如何在笑话中嘲弄这个常数,这样我就可以真正开始我的发帖了。有一个简单的方法可以开玩笑吗?

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

是的,大致上是这样的。我没有意识到我应该在测试其他方法时覆盖我自己的类方法。