gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 03:57:08 25 4
gpt4 key购买 nike

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

但是...我无法对此函数编写任何单元测试,因为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com