业力:运行 使用 phantomjs 的测试以 TypeError 结束,而以 Chrome 成功

Karma: Running test with phantomjs ends-up with TypeError, while succeeds with Chrome

我有一些 angular 服务和一个简单的测试,它测试 1 方法 returns 某种类型的实例。

当我在 WebStorm 中使用 PhantomJS 运行 和 Chrome

"browsers": ["PhantomJS", "ChromeCanary"]

在chrome中所有测试都通过了,但是在PhantomJS中一些测试会通过,但是上面提到的测试会产生类型错误。 (不是测试,而是测试正在测试的代码)

    TypeError: 'undefined' is not a function (evaluating 'this._decorateParent.bind(this)')
       <... other info>

当然,我可以模拟一些依赖关系,这会有所帮助。但我想知道这种行为的原因是什么。

angular.js v1.3.14  
karma      v0.12.32  
PhantomJS  v1.9.8  

更新到 PhantomJS 2,这是解决此问题的最简单方法。 PhantomJS 1.x 基于 QtWebKit 的 4 年前的分支,当时不支持 Function.prototype.bind。通常需要一个 shim 来让 PhantomJS 知道该函数,但这对于业力来说可能很难甚至不可能做到。

如果你想用垫片试试,this one 一直对我有用。