首页 > 解决方案 > 如何在 React Native 中使用 jest for constant 开始单元测试

问题描述

我是单元测试的新手,目前正在使用 Jest 为我的 TypeScript 应用程序编写单元测试。我正在使用一个名为common-packages我存储所有常量的自定义包,像这样简单

const CLIENT_ID = 1231123123;
const TEXT = {
  Discover:"Discover",
  loading: 'loading',
  Type: "Testing",
}
const Constants = {
  TEXT,
  CLIENT_ID,
} as const;

export default Constants;

在我的包裹 index.tsx 上。我出口Constant

export { default as Constants } from "./constants";

我要测试的功能是这个

import {Constants} from 'common-packages';

export const lockNextCardIfUncompleted = (data: any[]) => {
  if (data.length !== 0) {
    const locked = data.filter((e: any) => e.Type === Constants.TEXT.Type );
    if (locked.length === 0) return false;
    return true;
  }
  return false;
};

我已经尝试像这样为 lodash 编写单元测试并且它正在工作

const lodash = require('lodash')
test("repeat", () => {
expect(lodash.repeat("A",3)).toBe("AAA");
})

但是对于具有 common-packages 的单元测试,它失败了

import {
  lockNextCardIfUncompleted,
} from './fileName';

test('should return locked', () => {
  expect(
    lockNextCardIfUncompleted([
      {
        Type: 'A',
      },
    ]),
  ).toBe(false);
  expect(
    lockNextCardIfUncompleted([
      {
        Type: 'Testing,
      },
    ]),
  ).toBe(true);
});

它返回TypeError: Cannot read property 'TEXT' of undefined。所以测试没有从common-package. 有人可以帮我解决这个问题吗?谢谢你

标签: javascripttypescriptunit-testingjestjs

解决方案


您正在使用Default Exports,而不是Named Exports

所以你需要像这样导入常量:

import Constants from 'common-packages';

推荐阅读