Пересмотрите возвращаемое значение импортированной функции в Typescript с помощью Jest - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть функция, давайте вызовем ее generateName, который, как вы уже догадались, генерирует имя. Проблема в том, что при каждом запуске теста генерируется новое имя.

В одном из моих тестов я утверждаю, что функция вызывается с объектом, содержащим это имя. Тем не менее, имя продолжает меняться. Я мог бы просто проверить, что объект имеет имя свойства, но я действительно не хочу этого делать.

Моя идея состоит в том, что я могу смоделировать возвращаемое значение функции generateName и сделать что-то подобное

Import { generateName } from ‘libs/generateName’

jest.fn(generateName).mockResolvedValue ( ‘hello’ )

expect ( spy ).toHaveBeenCalledWith ( 
      expect.objectContaining ( {
        name: 'houses',
      } )
)

1 Ответ

0 голосов
/ 22 апреля 2020

Вы можете использовать jest.mock (moduleName, factory, options) для макета libs/generateName модуля.

Например generateName.ts:

export async function generateName() {
  const name = Math.random() + '';
  return name;
}

main.ts:

import { generateName } from './generateName';

export function main() {
  return generateName();
}

main.test.ts:

import { main } from './main';
import { generateName } from './generateName';

jest.mock('./generateName', () => {
  return {
    generateName: jest.fn(),
  };
});

describe('61350152', () => {
  it('should pass', async () => {
    (generateName as jest.MockedFunction<typeof generateName>).mockResolvedValueOnce('hello');
    const actual = await main();
    expect(actual).toBe('hello');
  });
});

Результаты модульных испытаний с отчетом о покрытии:

 PASS  stackoverflow/61350152/main.test.ts (28.524s)
  61350152
    ✓ should pass (6ms)

----------|---------|----------|---------|---------|-------------------
File      | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
----------|---------|----------|---------|---------|-------------------
All files |     100 |      100 |     100 |     100 |                   
 main.ts  |     100 |      100 |     100 |     100 |                   
----------|---------|----------|---------|---------|-------------------
Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        31.98s
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...