javascript - 在 Jasmine 中,array.includes 不起作用(必须用其他函数代替)。为什么?

标签 javascript arrays unit-testing karma-jasmine

我的问题看起来很奇怪。我有一个带有一个新的、非常简单的函数的构造函数,它应该检查一个变量是否包含在一个数组中。它工作得很好(我在一个表单中使用这个函数)。

但是...我无法对此函数编写任何单元测试,因为 Karma/Jasmine 看不到数组的“包含”函数。

有人可以建议我该怎么做吗?这里的情况稍微简化了一点:

//要测试的构造函数

    vm.isNameAlreadyUsed = function () {
    //debut logging:
        console.log ("vm.allNames ",vm.allNames);  // output: vm.allNames ['A', 'B', 'C']
        console.log ("and vm.nameToBeChecked is ",vm.nameToBeChecked);    //output: and vm.nameToBeChecked is 'A'

        return vm.allNames.includes(vm.nameToBeChecked);
        // The previous works as expected at runtime, but it causes the following exception in karma/jasmine:
        // TypeError: undefined is not a constructor (evaluating 'vm.allNames.includes(vm.nameToBeChecked)
    };

//测试( karma/ Jasmine )

        theConstructor.allNames = ["A", "B", "C"];
        theConstructor.nameToBeChecked = "A";
        var result theConstructor.isNameAlreadyUsed();           //error!
        expect(result).toBeTruthy();

Jasmine 有没有可能看不到“包含”?数组已填满,变量也已填满……为什么还要有构造函数?

TypeError: undefined is not a constructor (evaluating 'vm.allNames.includes(vm.nameToBeChecked)

谢谢


更新

我注意到在 jasmine 中,任何对“includes”的调用都会导致错误。这不取决于在哪里。例如,在 jasmine 文件中编写以下代码就足以得到一个提到...构造函数 (?!?) 的错误:

[1, 2, 3].includes(2);
// TypeError: undefined is not a constructor (evaluating '[1, 2, 3].includes(2)') in  ...

最佳答案

我猜这很可能是由于以下两个原因之一:

  1. 您的节点版本可能是 < 6.0.0,因为 Array.prototype.includes在 node@6.0.0 之前, native 不支持

  2. 您的浏览器 karma config file设置为“IE”,因为 Internet Explorer 不支持 Array.prototype.includes .

关于javascript - 在 Jasmine 中,array.includes 不起作用(必须用其他函数代替)。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40262797/

相关文章:

node.js - 如何在 Docker 中为 nodejs 应用程序设置单元测试?

javascript - 使用jquery单击加号时如何展开最近的div?

C 将字符串数组拆分为子数组

Java从文件读取字母表到多维数组

arrays - "looping over a 2-D array"的最佳方式,使用 Repa

ruby-on-rails - 哪里用 `FactoryGirl.build_stubbed` 哪里用RSpec的 `mock`/`double`

javascript - 简单的 html 与 Javascript 生成的 html?

javascript - 用惯用的 javascript 编写过滤器

javascript - alertify.js - rails 自定义确认对话框

unit-testing - Scala 测试 : What's the status and relationship of SUnit, ScalaTest、ScalaCheck、Specs 和 ParTest?