在编写测试时,应该尽可能地模拟 API 调用和函数返回的结果,以便确保函数在任何情况下都能正常工作并且不会出现意外行为。下面是一个使用 Jest.js 进行 API 调用模拟的示例:
const axios = require('axios')
// 假设我们正在测试以下函数
async function makeApiCall (paramOne, paramTwo) {
const responseOne = await axios.get(`http://someapi.com/?query=${paramOne}`)
const responseTwo = await axios.get(`http://someapi.com/?query=${paramTwo}`)
return [responseOne, responseTwo]
}
// 在编写测试时,我们希望确保函数能够返回正确的结果,并且未出现任何错误。
// 我们可以使用 Jest.js 中的 mock 函数模拟 API 调用并返回希望的结果。
test('Test API Calls', async () => {
const mockResponseOne = { data: { foo: 'bar' } }
const mockResponseTwo = { data: { baz: 'qux' } }
axios.get = jest.fn().mockResolvedValueOnce(mockResponseOne).mockResolvedValueOnce(mockResponseTwo)
const result = await makeApiCall('foo', 'baz')
expect(result).toEqual([mockResponseOne, mockResponseTwo])
})
在上面这个测试例子中,我们模拟了 axios.get
函数,以便我们可以返回我们想要的响应,从而确保函数按预期运行。这里使用 mockResolvedValueOnce
将模拟结果一次次放置到回调函数中,确保了结果的可靠和预期。