Использовать jest.mock и TypeScript без беспорядочного приведения типов? - PullRequest
0 голосов
/ 06 мая 2018

Когда я компилирую свой тест с использованием компилятора TypeScript и работаю с Jest-макетом, я часто получаю ошибки от tsc, такие как:

error TS2339: Property 'mockImplementationOnce' does not exist on type
              'typeof readFile'.

из этого минимального теста:

jest.mock('fs');
// Run before the imports but does not alter types :(

import { readFile } from 'fs';
import { fnThatReadsFile } from './lib';

it('should read a file', () => {
  const err = {};
  readFile.mockImplementationOnce((_, callback) => callback(err, null));
  // ^^ error TS2339: Property 'mockImplementationOnce' does not exist on type 'typeof readFile'.

  fnThatReadsFile();
  // expect...
});


Какие есть решения, кроме:

Может ли плагин TypeScript выполнить расширение модуля, когда модули требуются для jest.mock?

Ответы [ 2 ]

0 голосов
/ 20 августа 2018

Простое решение - импортировать напрямую из файла макета. Это выглядит не элегантно, но работает.

import { readFile } from '../__mocks__/fs';
0 голосов
/ 23 мая 2018

самое простое решение - импортировать fs следующим образом: const fs = require('fs') и использовать (fs.readFile as jest.Mock).mockImplementationOnce ...

...