Array.from不适用于jasmine

时间:2018-05-02 01:48:16

标签: javascript arrays node.js jasmine

我尝试使用Jasmine来测试我的代码,但是代码在浏览器中工作,而Array.from()在节点中工作如下:

> t = [1, 2, 3]
[ 1, 2, 3 ]
> Array.from(t)
[ 1, 2, 3 ]

这是代码,它在Firefox中有效:

var t = [1, 2, 3];
console.log(Array.from(t));
console.log(Array.from(baseObject.childNodes));

但是当我运行我的测试时,我得到了:

 TypeError: undefined is not a function (evaluating 'Array.from(t)') in file:///path/to/my/project/bin/my_module.js (line 154) (1)

2 个答案:

答案 0 :(得分:1)

在ECMAScript标准的第6版(ES2015)中添加了

Array.from。确保使用最新版本的ECMAScript进行测试。

答案 1 :(得分:0)

我从comments by Isiah Meadows发现虽然我使用节点8.11.1(我在评论中提到的版本是npm,而不是节点)用于与ES2017兼容的grunt,但是Jasmine使用了PhantomJS。与ES2015不完全兼容。作为解决方案,我已经完成了以下工作:

  1. 简化了polyfill provided by MDN
  2. 经过多次阅读后发现我需要使用babel-preset-es2015或babel的env预设定位目标chrome 45,以确保我的已编译代码与PhantomJS兼容。