Тестирование, если метод внешнего компонента вызывается в jest - PullRequest
0 голосов
/ 16 ноября 2018

Я использую jest и enzyme для модульного тестирования. Ниже мой index.js файл. Мне нужно проверить функцию файла openNotification и uploadErrorNotification. Однако экспортируется только функция uploadErrorNotification. Итак, как мне проверить обе функции.

Кроме того, я не хочу использовать другие библиотеки, кроме jest и enzyme.

//index.js
import {
      notification
    } from 'antd';

    const openNotification = (message, description, className) => {
      notification.open({
        key: 'upload-template',
        message,
        description,
        placement: "bottomRight",
        duration: null,
      });
    };

    const uploadErrorNotification = (uploadFailedText, errorMsg) => {
      openNotification(uploadFailedText, errorMsg, 'error');
    };

    export {
      uploadErrorNotification
    }

Это мой тестовый файл:

//test.js

import { uploadErrorNotification } from '../index.js

jest.mock('notification', () => ({ open: () => jest.fn() })); // was trying this but I couldn't understand how it will work

describe('Notification validation functions testing', () => {
  uploadErrorNotification('Upload failed', 'Something went wrong.');
  expect("openNotification").toHaveBeenCalledTimes(1); // want to do something like this
});

1 Ответ

0 голосов
/ 16 ноября 2018

Вы должны смоделировать внешнюю зависимость:

первая имитация antd, чтобы notification.open был шпионом

jest.mock('antd', () => ({notification: open: {jest.fn()}}))

Затем импортируйте модуль в ваш тест

import { notification  } from 'antd';

Знайте, что вы можете использовать это так:

expect(notification.open).toHaveBeenCalledTimes(1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...