Как издеваться над методом const в шутку? - PullRequest
0 голосов
/ 15 февраля 2019

Я тестирую код в машинописи, использую шуткуПожалуйста, научите меня издеваться getData, чтобы вернуть ожидаемое значение.Мой код, как показано ниже:

// File util.ts
export const getData = async () => {
    // Todo something
    return data;
}

// File execution.ts import { getData } from './util';
function execute()
{
    // todo something
    const data = await getData();
    // todo something 
}

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

Проблема в том, что ваша функция возвращает обещание.В зависимости от того, как вы его используете, существует несколько способов его смоделировать.

Самый простой способ - смоделировать его напрямую, но тогда он всегда будет возвращать одно и то же значение:

// note, the path is relative to your test file
jest.mock('./util', () => ({ getData: ()=>'someValue' }))

Есливы хотите протестировать как разрешенный, так и отклоненный случай, который вам нужно смоделировать getData, чтобы он возвратил шпиона, где вы позже сможете изменить реализацию, используя mockImplementation.Вам также нужно использовать async/await, чтобы тест работал, посмотрите на документы об асинхронном тестировании:

import {getData} from './util'
jest.mock('./util', () => ({ getData: ()=> jest.fn() }))

it('success case', async ()=>{
  const result = Promise.resolve('someValue')
  getData.mockImplementation(()=> result)

  // call your function to test
  await result // you need to use await to make jest aware of the promise

})

it('error case', async()=>{
  const result = Promise.reject(new Error('someError))
  getData.mockImplementation(()=> result)
  // call your function to test
  await expect(result).rejects.toThrow('someError');
})
0 голосов
/ 15 февраля 2019

Попробуйте следующее в вашем тестовом файле.Импортируйте функцию из модуля.

 import { getData } from './util';

Затем смоделируйте модуль с функцией и ее возвращаемым значением после всех операторов импорта

jest.mock('./util', () => ({ getData: jest.fn() }))
getData.mockReturnValue("abc");

Затем используйте его в своих тестах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...