Как проверить импорт / экспорт с помощью Jest?

Это структура, которая у меня есть:

Как проверить импорт / экспорт с помощью Jest?

Как вы видите, у меня есть 100% тестовое покрытие файла shipments.js, которое представляет собой тесты ниже:

import shipmentsPagination, {
  setFilters,
  removeFilter,
  toggleFiltersModal,
  setCSVDataAction,
} from '../../actions/shipments';

describe('shipments redux actions', () => {
  it('should test setCSVDataAction', () => {
    const result = setCSVDataAction({
      itemsCount: 0,
      shipments: [],
    });

    expect(result.type).toEqual('SET_CSV_DATA');
    expect(result.payload).toEqual({
      shipmentsCSV: {
        itemsCount: 0,
        shipments: [],
      },
    });
  });

  it('should test toggleFiltersModal', () => {
    const result = toggleFiltersModal(true);

    expect(result.type).toEqual('TOGGLE_SHIPMENTS_FILTERS_MODAL');
  });

  it('should test removeFilter', () => {
    const filters = {
      shipmentId: '123',
      status: 'received',
      carrier: 'FedEx',
      shippedFrom: 'Dallas',
      shippedTo: 'NY',
      shippedDate: '10/13/2018',
      shipmentType: 'Colocation Hardware',
    };

    const result = removeFilter(filters);

    expect(result.type).toEqual('REMOVE_SHIPMENTS_FILTER');
    expect(result.payload).toEqual({ [filters]: '' });
  });

  it('should test shipmentsPagination', () => {
    const result = shipmentsPagination({
      page: 2,
      pageSize: 25,
    });

    expect(result.type).toEqual('UPDATE_SHIPMENTS_PAGINATION');
    expect(result.payload).toEqual({ page: 2, pageSize: 25 });
  });

  it('should test setFilters', () => {
    const result = setFilters({
      shipmentId: '123',
      status: 'Received',
      carrier: 'FedEx',
      shippedFrom: 'Houston - HOU02',
      shippedTo: 'Herp',
      shippedDate: '1/24/2019',
      shipmentType: 'Colocation Hardware',
    });

    expect(result.type).toEqual('SET_SHIPMENTS_FILTERS');
    expect(result.payload).toEqual({
      shipmentId: '123',
      status: 'Received',
      carrier: 'FedEx',
      shippedFrom: 'Houston - HOU02',
      shippedTo: 'Herp',
      shippedDate: '1/24/2019',
      shipmentType: 'Colocation Hardware',
    });
  });
});

И, как вы можете видеть, говорится, что index.js не имеет покрытия на линии №1.

index.js это:

import shipments from './shipments';

export default {
  shipments,
};

Итак, как я могу протестировать этот импорт / экспорт, чтобы получить 100% тестовое покрытие?

Обязательный комментарий «100% охват не является самоцелью, мог просто оставьте это в покое» :)

MyStackRunnethOver 15.01.2019 23:41

не ответ, но: вы можете просто игнорировать index.js при расчете покрытия

CharybdeBE 16.01.2019 12:01
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
3 487
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

@mystackrunnethover в некотором роде прав, совсем не обязательно освещать эту строку, но на всякий случай:

Я использую эти тесты как «тесты работоспособности», чтобы убедиться, что Jest работает.

Распространенная ошибка - предположить, что imported_thing.toBeTruth() выйдет из строя, если импорт не сработал. Не будет - imported_thing будет пустым объектом, что правда.

Вот что мы используем:

import Account from '/account';

//describe block

expect(Account).toBeTruthy();

expect(Object.keys(Account).length > 0).toBe(true);

Это, конечно, работает только в том случае, если Account действительно имеет свойства (и должен). Другой метод - специально проверить ожидаемые свойства.

Я сделал то, что вы сказали, и теперь получаю следующее: monosnap.com/file/oKNvsgI9SdIdaKyBUrXBz65L6Z7jTV, что очень сбивает с толку.

Reacting 15.01.2019 23:57

Я не знаю, что это, извините.

Caleb Jay 16.01.2019 00:03
Ответ принят как подходящий

Из того, что я вижу в вашем коде, просто импортируйте shipmentsPagination из index.js в тесте:

import defaultExport from '../../actions/';  // import the default export from index.js
const { shipments: shipmentsPagination } = defaultExport; // and use it to get shipmentsPagination
import {
  setFilters,
  removeFilter,
  toggleFiltersModal,
  setCSVDataAction,
} from '../../actions/shipments'; // everything else can come from shipments.js

Импорт shipmentsPagination из index.js обеспечит тестирование линии export в index.js.

Другие вопросы по теме