【问题标题】:Running test cases to test a function using Jest运行测试用例以使用 Jest 测试功能
【发布时间】:2020-01-23 07:27:19
【问题描述】:

我正在尝试为一个需要两个参数的函数测试几个测试用例。这两个参数以及结果我在三个不同的文件中定义了它,然后将其导出。我正在使用 Jest,但它抛出“TypeError: (0, _index.default) is not a function”错误。有人可以告诉我哪里出错了。在沙箱中测试这个

测试文件:

import appendToFilter from "./index";
import { res1, res2, res3, res4, res5, res6, res7, res8 } from "./Results";
import { src1, src2, src3, src4, src5, src6, src7, src8 } from "./Source";
import { ip1, ip2, ip3, ip4, ip5, ip6, ip7, ip8 } from "./Input";

test("case1", () => {
  expect(appendToFilter(src1, ip1)).toBe(res1);
});

index.js

export function appendToFilter(filter, inputObjects) {
  // logic here
}

链接:https://codesandbox.io/s/optimistic-mirzakhani-pogpw-so-b47y8

【问题讨论】:

    标签: javascript jestjs babel-jest


    【解决方案1】:

    您将函数作为默认导入导入,但您将其导出为命名导出。转到您的 index.js 和

    export default appendToFilter

    或通过执行以下操作将函数导入为命名导入:

    import { appendToFilter } from "./index";

    代替:

    import appendToFilter from "./index";

    【讨论】:

      【解决方案2】:

      这是因为您没有任何默认导出,并且您正在从索引导入 appendToFilter 而没有命名导入。

      使用

      import { appendToFilter } from "./index";
      

      而不是

      import appendToFilter from "./index";
      

      【讨论】:

      • 您的做法似乎是正确的,只是我不确定您的功能中的逻辑是什么。通常,您将参数传递给您的函数,期望您的返回值符合您的逻辑。
      • 也许你应该提出另一个关于如何测试你的功能的问题。
      • 我认为您在测试文件中看到的内容是正确的。您需要注意的是断言 - toBe 并不总是有效,您需要在某些情况下尝试其他断言,例如 toEqual,尤其是数组和对象。查看 Jest 文档了解更多您可以尝试的断言
      猜你喜欢
      • 1970-01-01
      • 2021-05-27
      • 2019-04-24
      • 2021-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-24
      • 2020-08-29
      相关资源
      最近更新 更多