如何在使用 jest 模拟 axios.get 时传递 AxiosPrmoise 类型值?
Posted
技术标签:
【中文标题】如何在使用 jest 模拟 axios.get 时传递 AxiosPrmoise 类型值?【英文标题】:How to pass AxiosPrmoise type value while mocking axios.get using jest? 【发布时间】:2019-07-13 12:35:35 【问题描述】:我尝试了下面的代码来模拟 axios.get() 函数,但是打字稿给了我“' data: expectedResult ' 类型的参数不可分配给 'AxiosPromise' 类型的参数”错误。 有人可以帮我处理这个错误吗?
const expectedResult: string = 'result';
const mock = jest.spyOn(axios, 'get');
mock.mockReturnValueOnce( data: expectedResult );
const result = await sut.getFeed("testUrl");
expect(mock).toHaveBeenCalled();
expect(result).toBe(expectedResult);
【问题讨论】:
【参考方案1】:我从模拟函数中添加了 AxiosResponse 类型的返回值,它运行良好。
const expectedResult: string = 'result';
const feedResponsePromise = Promise.resolve( data: expectedResult as AxiosResponse);
const mock = jest.spyOn(axios, 'get');
mock.mockReturnValueOnce(feedResponsePromise);
const result = await sut.getFeed("testUrl");
expect(result).toBe(expectedResult);
【讨论】:
以上是关于如何在使用 jest 模拟 axios.get 时传递 AxiosPrmoise 类型值?的主要内容,如果未能解决你的问题,请参考以下文章
axios在componentDidMount中获取数据后如何拍摄jest snapshot?
使用 jest.mock('axios') 时如何模拟拦截器?