Это структура, которая у меня есть:
Как вы видите, у меня есть 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% тестовое покрытие?
не ответ, но: вы можете просто игнорировать index.js при расчете покрытия



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


@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, что очень сбивает с толку.
Я не знаю, что это, извините.
Из того, что я вижу в вашем коде, просто импортируйте 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.
Обязательный комментарий «100% охват не является самоцелью, мог просто оставьте это в покое» :)