这是我的结构:
如您所见,我对文件 shipments.js
的测试覆盖率为 100%,测试如下:
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
导入 shipmentsPagination
即可:
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
从 index.js
导入 shipmentsPagination
将确保 index.js
中的 export
行得到测试。
关于javascript - 如何使用 Jest 测试导入/导出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54207884/