这是我的结构:

如你所见,我在文件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%的测试覆盖率呢?
发布于 2019-01-16 07:12:35
根据我对您代码的了解,只需在测试中从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行。
发布于 2019-01-16 06:49:30
@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实际上都有属性(并且应该有属性)时,这才能起作用。另一种方法是专门检查您期望的属性。
https://stackoverflow.com/questions/54207884
复制相似问题