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



我试图在呈现组件之前简单地模拟计算的属性返回值。尝试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以强制该块显示?

与同事进一步挖掘出来,他们确认应避免在测试中直接编辑计算的属性。

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

因此,而不是试图将计算属性设置为true,而是可以模拟路径并包括我要寻找的单词,以便将其评估为true

希望这对以后有帮助!

最新更新