【问题标题】:How to Start Unit Testing in React Native using jest for constant如何在 React Native 中使用 jest for constant 开始单元测试
【发布时间】:2021-05-24 18:09:21
【问题描述】:

我是单元测试的新手,目前正在使用 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");
})

但是对于有通用包的单元测试,它失败了

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 的常量。有人可以帮我解决这个问题吗? 谢谢

【问题讨论】:

    标签: javascript typescript unit-testing jestjs


    【解决方案1】:

    您使用的是Default Exports,而不是Named Exports

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

    import Constants from 'common-packages';
    

    【讨论】:

    • 我编辑了我的问题,先生,添加了我如何在我的包 index.tsx 中导出它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多