Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Jasmine中,array.includes不起作用(必须由其他函数替换)。为什么?_Javascript_Arrays_Unit Testing_Karma Jasmine - Fatal编程技术网

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

Javascript 在Jasmine中,array.includes不起作用(必须由其他函数替换)。为什么?,javascript,arrays,unit-testing,karma-jasmine,Javascript,Arrays,Unit Testing,Karma Jasmine,我的问题似乎很奇怪。我有一个带有新的、非常简单的函数的构造函数,它应该检查数组中是否包含变量。它工作得很好(我在表单中使用了这个函数) 但是。。。我无法对这个函数编写任何单元测试,因为Karma/Jasmine无法看到数组的函数“includes” 有人能建议我怎么做吗?这里的情况有点简化: //要测试的构造 vm.isNameAlreadyUsed = function () { //debut logging: console.log ("vm.allName

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

但是。。。我无法对这个函数编写任何单元测试,因为Karma/Jasmine无法看到数组的函数“includes”

有人能建议我怎么做吗?这里的情况有点简化:

//要测试的构造

    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)
    };
//测试(卡玛/茉莉花)

茉莉花可能看不到“包含”吗?数组已填充,变量也。。。为什么会有构造器呢

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


更新

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


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

  • 您的节点版本可能<6.0.0,因为直到node@6.0.0,或

  • 您的浏览器设置为“IE”,因为Internet Explorer不支持


  • 我用(vm.allNames.indexOf(vm.jobName)!=-1而不是(vm.allNames.includes(vm.jobName))解决了这个问题,但我仍然不满意Jasmine的行为,我还在等待关于我在问题中描述的原因的解释。仅供参考:使用
    数组#includes
    可能需要node.js中的和谐标志(如果您正在使用),请参阅。仅为了共享信息,我正在node@8.9.4当浏览器设置为“PhantomJS”时,我仍然有这个问题
    TypeError: undefined is not a constructor (evaluating 'vm.allNames.includes(vm.nameToBeChecked)
    
    [1, 2, 3].includes(2);
    // TypeError: undefined is not a constructor (evaluating '[1, 2, 3].includes(2)') in  ...