Ember 2.10 组件创建错误

Ember component creation error in 2.10

当我在 mixin 的单元测试中执行 Ember.Component.Create() 时,出现此错误。 我正在将 ember 从 1.13 升级到 2.10,此测试在 1.13 中运行良好,但在 2.10 中出现此错误。看起来在 2.10 ember 组件初始化需要一个应用程序实例。

Died on test #1     at Module.callback (http://localhost:4200/assets/tests.js:250:19)
    at Module.exports (http://localhost:4200/assets/vendor.js:131:32)
    at requireModule (http://localhost:4200/assets/vendor.js:30:18)
    at TestLoader.require (http://localhost:4200/assets/test-support.js:7104:7)
    at TestLoader.loadModules (http://localhost:4200/assets/test-support.js:7096:14)
    at Function.TestLoader.load (http://localhost:4200/assets/test-support.js:7126:22)
    at http://localhost:4200/assets/test-support.js:7009:18: Cannot instantiate a component without a renderer. Please ensure that you are creating <(subclass of Ember.Component):ember210> with a proper container/registry.@ 9 ms
Source:     
Error: Cannot instantiate a component without a renderer. Please ensure that you are creating <(subclass of Ember.Component):ember210> with a proper container/registry.
    at Class.init (http://localhost:4200/assets/vendor.js:51954:15)
    at Class.superWrapper [as init] (http://localhost:4200/assets/vendor.js:50175:22)
    at Class.init (http://localhost:4200/assets/vendor.js:50443:19)
    at Class.superWrapper (http://localhost:4200/assets/vendor.js:50175:22)
    at Class.init (http://localhost:4200/assets/vendor.js:50493:19)
    at Class.superWrapper (http://localhost:4200/assets/vendor.js:50175:22)
    at Class.exports.default._emberMetal.Mixin.create._Mixin$create.init (http://localhost:4200/assets/vendor.js:51000:17)
    at Class.superWrapper (http://localhost:4200/assets/vendor.js:50175:22)
    at Class.init (http://localhost:4200/assets/vendor.js:17472:19)
    at Class.superWrapper [as init] (http://localhost:4200/assets/vendor.js:50175:22)

我尝试过的一些东西:

我不知道在 1.13 中是否需要对组件进行单元测试 Ember.Component.Create();但是你现在不应该在组件的单​​元测试期间自己创建组件;至少这是我在处理 Ember.

过程中学到的

您应该使用 ember-qunit 中的 moduleForComponentunit: true 参数,并在测试方法中使用 this.subject(); 简单地获取组件。

我已经为您创建了一个 twiddle 来说明使用 mixin 对组件进行单元测试。希望对您有所帮助。

我试过 renderer: this.render 或其他选项,但没有任何效果,最终根据我得到的线索 here

我做了 renderer: {},效果很好。

link 中还有其他好的解决方案,但在我的场景中不需要它,因为我没有渲染任何东西。