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(...);
});
是的,大致上是这样的。我没有意识到我应该在测试其他方法时覆盖我自己的类方法。