我正在尝试为我的应用程序中的服务编写测试。
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/