javascript - 如何使用 Jest 测试导入/导出?

标签 javascript reactjs ecmascript-6 redux jestjs

这是我的结构:

enter image description here

如您所见,我对文件 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/

相关文章:

javascript - 如何在 javascript 循环中使用正则表达式匹配组中的数字范围?

javascript - 表单未通过 onclick 事件提交

Javascript - 将日期字符串重新格式化为 ISO8601

reactjs - 如何更改 react 导航中的后退按钮路线

angularjs - ASP.NET MVC 和 Angularjs 与 ASP.NET MVC 和 Reactjs

reactjs - 如何使 reactstrap 模态可拖动?

javascript - Webpack:除 index.js 以外的默认文件

javascript - 使用 Javascript 插入新行 (rowspan)

javascript - ES6 在循环之前或循环中声明变量

javascript - 无法在表中显示数据库中的所有数据