Как имитировать функцию asyn c в nodejs с помощью jest - PullRequest
0 голосов
/ 13 июля 2020

В приведенной ниже функции я должен имитировать функцию httpGet, поэтому вместо вызова фактической функции и возврата значения она должна вызывать фиктивную функцию

getStudents: async(req,classId) => {
  
  let result = await httpGet(req);
  return result;
},

Мой тестовый пример

describe('Mock',()=>{
    it('mocking api',async()=>{
        const result = await getStudents(req,classId);;
        console.log(result);
    })
})

1 Ответ

0 голосов
/ 13 июля 2020

вы можете иметь такое же jest.fn() в качестве макета для функции, как и для обычного.

тогда вы можете реализовать собственное возвращаемое значение Promise или использовать шутки mockResolvedValue или mockRejectedValue

https://jestjs.io/docs/en/mock-function-api#mockfnmockresolvedvaluevalue

Например:

import { httpGet } from 'http';
jest.mock('http'); // this is where you import the httpGet method from

describe('Mock',()=>{
    it('mocking api',async() => {
        httpGet.mockResolvedValue(mockresult); // httpGet should already be a jest.fn since you used jest.mock
        const result = await getStudents(req,classId);
        console.log(result);
    })
})
...