#unit-testing #jestjs
Вопрос:
Я пишу модульные тесты и хочу протестировать img
атрибуты. Однако, когда я делаю утверждение, я получаю mocked img
attributes, которые находятся под __mocks__
> fileMock.js
. Поскольку я издеваюсь над файлами, я получаю только атрибуты mocked file. Как я могу пропустить поддельные файлы в своих тестах?
describe('Buttons', () => {
test('Clear filters work after filtering tools, workflows and using searchbar', async () => {
render(<HeaderBar {...defaults} />);
const clearFilterButton = screen.getByRole('button', { name: 'Clear Filters' });
const toolsButton = screen.getByRole('button', { name: 'TOOLS' });
const selectedTools = await within(toolsButton).findByRole('img');
expect(selectedTools).toHaveAttribute('src', 'images/tools-selected.png');
});
И результат теста :
Buttons › Clear filters work after filtering tools, workflows and using searchbar
expect(element).toHaveAttribute("src", "images/tools-selected.png") // element.getAttribute("src") === "images/tools-selected.png"
Expected the element to have attribute:
src="images/tools-selected.png"
Received:
src="test-file-stub"
39 | const toolsButton = screen.getByRole('button', { name: 'TOOLS' });
40 | const selectedTools = await within(toolsButton).findByRole('img');
> 41 | expect(selectedTools).toHaveAttribute('src', 'images/tools-selected.png');
Мне нужно протестировать реальное изображение и пропустить издевательство img
над ним в моем тесте.
Ответ №1:
Похоже, у вас есть макет пользовательского модуля, определенный вручную, в __mock__
папке рядом с вашим фактическим кодом.
В этом случае макет используется в любом тестовом файле, где вы вызываете jest.mock('moduleName')
, если automock
не установлено true
значение, и в этом случае макет будет использоваться всегда.
Если вы явно издеваетесь над файлом, используя jest.mock('moduleName')
его, просто удалите его из тестового файла, где вы хотите использовать фактический код вместо макета.
Если вы automock
установили значение true
в своей конфигурации Jest, вы можете указать Jest использовать исходный файл кода в данном тесте, используя jest.unmock('moduleName')
.
Комментарии:
1. Спасибо за ответ, я использую макет пользовательского модуля вручную, а расширения png высмеиваются под макетом > fileMock.js . однако тест по-прежнему использует поддельные данные. Я использовал unmock перед рендерингом в тесте. … jest.unmock(‘./tools-selected.png’); render(<HeaderBar {…defaults} />); …