【发布时间】:2018-12-18 21:38:41
【问题描述】:
我在一个类中有以下方法:
import axios from 'axios'
public async getData() {
const resp = await axios.get(Endpoints.DATA.URL)
return resp.data
}
然后我正在尝试设置一个 Jest 测试来执行此操作:
jest.mock('axios')
it('make api call to get data', () => {
component.getData()
expect(axios.get).toHaveBeenCalledWith(Endpoints.DATA.URL)
})
问题是因为我没有模拟返回值,所以它给resp.data 一个错误,因为我在null 或undefined 对象上调用data。我花了至少 2 个小时尝试各种方法来使其正常工作,但我找不到一种方法可以模拟 axios.get 并返回一些值。
Jest 的文档使用 JavaScript,所以他们给出了这个示例 axios.get.mockResolvedValue(resp),但我不能调用 mockResolvedValue,因为 TypeScript 中的 axios.get 上不存在该方法。
另外,如果你知道除了 Jest 之外的其他优秀的 React 测试库,可以轻松地为 TypeScript 做这些事情,请随时分享。
【问题讨论】:
标签: reactjs typescript axios jestjs