Базовый тест шутки для файла с 1 функцией получает 0% покрытия

#jestjs

#jestjs

Вопрос:

У меня есть 2 файла с 1 функцией в нем. Мой тест такой же простой, смотрите ниже:

doc.js

 export function createSynthId(doc) {
  const synthId = `${doc.attachmentId}-${doc.materialId}-${doc.fileName}-${doc.title}-${doc.materialURL}`;
  return synthId;
}
  

doc.test.js

 import { createSynthId } from './doc';

describe('doc', () => {
  it('create synthetic id', () => {
    expect(createSynthId(global.doc)).toEqual('987654-123456-File Name.pptx-undefined-');
  });

  it('create synthetic id', () => {
    expect(createSynthId({})).toEqual('undefined-undefined-undefined-undefined-undefined');
  });
});
  

Мой второй файл практически такой же, просто функция большего размера. Оба теста успешно выполнены, но сообщается, что покрытие составляет 0% для операторов, функций и строк, но 100% для ветвей. В отчете о покрытии все строки также отображаются красным цветом.

введите описание изображения здесь

У нас есть много похожих файлов, и все они работают. Чего я здесь не понимаю?

Обновить

Я добавил временную функцию в doc.js

 export const makeTestsHappy = () => {
  console.log(CONFIG);
};
  

добавление к doc.test.js

   it('does more', () => {
    makeTestsHappy();
  });
  

и когда я пытаюсь это протестировать, я получаю ошибку TypeError: (0 , _doc.makeTestsHappy) is not a function

Комментарии:

1. вы импортировали эту функцию makeTestsHappy? вы можете поместить журналы внутрь createSynthId , чтобы проверить, вызывается ли он во время выполнения тестов

2. я выполнил оба из них, и я не видел, как выполняются журналы. Однако смотрите Ответ ниже. Спасибо за попытку!

Ответ №1:

Вот этот манекен издевался над файлом, который я тестировал. Я забыл jest.unmock('/doc') , что он сразу же начал работать, когда я разблокировал. Спасибо всем за ваше терпение: D

Ответ №2:

Попробуйте переименовать ваш тестовый файл из doc.test.js в doc.spec.js . Вы используете синтаксис BDD, и правильное имя должно включать spec .

Комментарии:

1. не повезло, изменение спецификации ничего не дало. Кроме того, более 200 других моих тестов работают .test.js просто отлично.