首页 > 解决方案 > 如何在初始化之前向单元测试中的组件添加属性?

问题描述

我正在开发一个带有 init 函数的 Ember 组件,我想为其添加单元测试。该组件具有以下属性:

1) init 函数不能多次运行,并且

2)组件依赖于模型(currentUser)传递给它。

到目前为止,我已经尝试编写这样的测试:

test('#init', function(assert) {
  const component = this.owner.lookup('component:component-that-depends-on-property');

  const currentUser = make('user');
  component.set('currentUser', user);

  component.init();

  assert.ok(component.somethingHasHappened);
});

我的问题是 init 方法在 owner.lookup 行上运行,这意味着我无法在 currentUser 运行之前将其放入组件中。同样,我不能在不破坏组件状态的情况下多次运行 init 方法。

我注意到查找方法需要一个options参数,并认为我可以使用它来传递 currentUser ,但这似乎不起作用,我找不到关于查找方法的太多文档。

如果可能的话,我想避免为此编写集成测试。有没有一种我没有看到的好方法/解决方法?

标签: javascriptember.jsqunitember-qunit

解决方案


我建议为组件编写集成测试。避免为组件编写单元测试用例,而是为控制器、mixin、模型、路由、服务编写单元测试用例


推荐阅读