用jest嘲笑特定URL上的axios请求

atmip9wb  于 9个月前  发布在  Jest
关注(0)|答案(1)|浏览(125)

我想知道是否可以根据url使用不同的值来模拟axios请求。我使用jest和typescript。现在我有这个工作示例:

import axios from 'axios';
import { mocked } from 'ts-jest';
jest.mock('axios');
    
const mAxios = mocked(axios, true);
mAxios.get.mockResolvedValue({
  data: [
    {
      id: 1,
      title: 'john doe',
    },
    {
      id: 2,
      title: 'keyboard cat',
    },
  ],
});

字符串
它工作,但正如你所看到的,它总是返回相同的值,无论请求发送到哪里。我想知道我如何才能实现我的目标。

bnl4lu3b

bnl4lu3b1#

使用.mockImplementation()回调:

import axios from 'axios';
import { mocked } from 'ts-jest';
jest.mock('axios');

const mAxios = mocked(axios, true);
mAxios.get.mockImplementation((url) => {
    switch (url) {
        case '/users.json':
            return Promise.resolve({data: [{id: 1, title: 'john doe'}]})
        case '/items.json':
            return Promise.resolve({data: [{id: 1, item: 'whatever'}]})
        default:
            return Promise.reject(new Error('not found'))
    })
}

字符串

相关问题