Как вы издеваетесь над внешним npm модулем с Jest? - PullRequest
0 голосов
/ 14 апреля 2020

Я пытаюсь смоделировать модуль npm, на который нет ссылки в тестовом файле. Большинство ответов, которые я видел, были там, где в тестовом файле создавался макет, а затем на него ссылались также из тестового файла. Это не то, что я пытаюсь сделать.

Я бы хотел, чтобы мой тест выполнял макет модуля npm и имел функцию testMe, чтобы попытаться вызвать код из модуля, который был смоделирован, и получить его. данные из него. По некоторым причинам это оказалось неуловимым.

image.ts

import Jimp from "jimp/es";

export const testMe = async (string: string) => {
  const res = await Jimp.read(string);

  return res;
}

image.test.ts

import { testMe } from '../src/utils/image';

jest.mock('jimp/es', () => ({
  read: jest.fn(() => Promise.resolve('mockedString'))
}));

describe('testMe', () => {
  it('successfully completes', async () => {
    const image = 'abcde==';

    const result = await testMe(image);

    expect(result).toBe('mockedString');
  });
});

Как мне создать тестовый файл для правильно издеваться над зависимостью? В настоящее время я получаю только ошибку:

  ● testMe › successfully completes

    TypeError: Cannot read property 'read' of undefined

      21 | 
      22 | export const testMe = async (string: string) => {
    > 23 |   const res = await Jimp.read(string);
         |                          ^
      24 | 
      25 |   return res;
      26 | }

      at Object.exports.testMe (src/utils/image.ts:23:26)
      at Object.<anonymous> (__tests__/image.test.ts:26:26)
...