JEST Mocking из узловых модулей - PullRequest
0 голосов
/ 24 апреля 2020

Я пытался это некоторое время, и я не мог найти решение.

Я пробовал много решений (папка ___ mock, папка mockimplementation, mock и многое другое), но у меня всегда было то же самое ошибка client.mockImplementation не является функцией

//restclient.js

module.exports = (cfg) => new Client(config);
// api.js
const client = require('restclient');
module.exports.doRequest = () => {
    const request = client();
    const config = {};
    request.get('/path/to/request', config)
    .then(result => console.log(result))
}
//api.tests.js
const client = require('restclient');
const api = require('./api');

jest.mock('restclient', () => () => ({
  get: jest.fn(),
}));
  describe('testing API', () => {
    test('test then', async () => {
      try {
        restclient.mockImplementation(() => () => ({
          get: (url, config) => 'Hi! I'm mocked',
        }));
        const result = await api.doRequest();
        console.log('result', result);
      } catch (e) {
        console.log('eee', e);
      }
    });
  });

Я не смог найти решение, думаю, я не могу высмеять const request = restclient() часть, но я не знаю почему !!

1 Ответ

2 голосов
/ 24 апреля 2020

Вам не хватало издеваться над конструктором.

Это издевается над конструктором restclient

jest.mock('restclient', ()=> jest.fn().mockImplementation(() => {

 /** here you can create and return a mock of request **/

}));
...