首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Jest测试导入/导出?

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

Stack Overflow用户
提问于 2019-01-16 06:39:35
回答 2查看 3.4K关注 0票数 1

这是我的结构:

如你所见,我在文件shipments.js上有100%的测试覆盖率,下面是测试:

代码语言:javascript
复制
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是这样的:

代码语言:javascript
复制
import shipments from './shipments';

export default {
  shipments,
};

那么,我如何测试导入/导出以获得100%的测试覆盖率呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-16 07:12:35

根据我对您代码的了解,只需在测试中从index.js导入shipmentsPagination

代码语言:javascript
复制
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行。

票数 2
EN

Stack Overflow用户

发布于 2019-01-16 06:49:30

@mystackrunnethover在某种程度上是对的,没有必要完全覆盖这一行,但是,以防万一:

我使用这些测试作为“健全性测试”,以确保Jest甚至在运行。

一个常见的陷阱是假设如果导入不起作用,imported_thing.toBeTruth()将失败。它不会-- imported_thing将是一个空对象,这是真的。

下面是我们使用的内容:

代码语言:javascript
复制
import Account from '/account';

//describe block

expect(Account).toBeTruthy();

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

当然,只有当任何Account实际上都有属性(并且应该有属性)时,这才能起作用。另一种方法是专门检查您期望的属性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54207884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档