在Ember组件测试中模拟条件计算属性

时间:2018-02-13 19:24:57

标签: javascript unit-testing ember.js

我试图在渲染组件之前简单地模拟计算属性返回值。尝试this.set('isHome', true)不起作用,因为我无法将其传递给组件。

组件[逻辑]:

isHome: false

组件[模板]:

{{#if isInbox}}
  <p id="maintext">Text</p>
{{/if}}

测试

test('Block is visible on the homepage', function(assert) {
  assert.expect(1);
  this.set('isHome', true); // Does nothing
  this.render(template);
  let maintext = this.$("#maintext")
  this.asyncWait(assert, () => {
    assert.ok(maintext);
  });
});

这是布局的一个非常粗略的轮廓,带有计算属性,然后用于显示页面上的块。如何将该计算属性覆盖为true以强制显示该块?

1 个答案:

答案 0 :(得分:0)

与同事进一步深入研究,他们确认应避免尝试直接在测试中编辑计算属性。

相反,他们建议更改用于设置ComputedProperty的值。就我而言,我正在检查当前路径是否包含一个单词。

因此,我没有尝试将Computed Property设置为true,而是可以模拟路径并包含我正在寻找的单词,以便它的计算结果为true

希望以后可以帮助别人!