javascript - 如何在初始化之前向单元测试中的组件添加属性?

标签 javascript ember.js qunit ember-qunit

我正在开发一个带有初始化函数的 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 方法。

我注意到 lookup 方法接受了一个 options 参数,我想我也许可以用它来传递 currentUser ,但这似乎不起作用,而且我找不到太多文档关于查找方法。

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

最佳答案

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

关于javascript - 如何在初始化之前向单元测试中的组件添加属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58193109/

相关文章:

javascript - EmberJS - 将项目重构为组件会停止查询参数和操作触发

unit-testing - Qunit 测试位于包含多个 Controller 的文件中的 ember Controller ?

javascript - 使用 Qunit 测试返回的函数

javascript - 当带有 arg 的函数抛出时 QUnit 终止,除非包装在匿名函数中

javascript - 单击屏幕上的任意位置即可隐藏通知栏,无需使用 Jquery

Javascript 将数据从一种格式转换为另一种格式,以便代码可以读取它

javascript - ember 观察正在保存

绑定(bind)到关系属性

javascript - 使用正则表达式替换javascript中的情绪字符

javascript - 具有滑动悬停效果的导航菜单