Как использовать функцию jest.spyOn для проверки функции из другого файла - PullRequest
1 голос
/ 17 июня 2019

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

Я пытаюсь проверить, вызывается ли функция запуска в файле server.js

Файл ввода выглядит примерно так, как показано ниже.


    import config from 'config';

    export default async function run() {
      try {
       /*
         some code
       */
      } catch (err) {
        process.exit(1);
      }
    }

    run();

И тестовый файлкак показано ниже


    import run from '../server';
    describe('server-test', () => {
    it('run', async () => {
        const start = require('../server');
        const spy = jest.spyOn(start, run);
        await run();
        expect(spy).toBeCalled();
      });
    });

Тест должен работать правильно, но я получаю ниже ошибку при запуске этого теста

Cannot spy the async function run() {

    try {
            /*
             some code.
            */
          } catch (err) {
            process.exit(1);
          }
        } property because it is not a function; undefined given instead

1 Ответ

0 голосов
/ 17 июня 2019

Я довольно долго исследовал эту ошибку и закончил на следующем посте Как шпионить за экспортированной функцией по умолчанию с Jest?

Таким образом, не исключая ключевое слово по умолчанию (т. Е. Требуется для ES 6 lint), единственное решение - использовать слово «по умолчанию» вместо «run».

Используйте как-то так.

const spy = jest.spyOn (начало, «по умолчанию»);

Это должно работать.

...