在Ember组件的Yielding上下文中测试属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Ember组件的Yielding上下文中测试属性相关的知识,希望对你有一定的参考价值。

有时我会处理需要产生数据传输对象(DTO)的组件,以便分解问题。例如,如果我有某种UI组件,我想在多个上下文中重用。我会将这个表示组件提取为非异步的东西,留下一个在需要时处理异步调用的包装器。然后,异步组件将产生调用的数据。一个示例用法是:

{{#call-ajax as |data|}}
  {{presentation-component title=data.title}}
{{/call-ajax}}

现在,对于测试,我不想在presentation-component组件的测试中使用call-ajax,但我需要一些方法来对作为data的ajax调用的结果进行断言。

我最初的想法是某种组件/帮助器只能用于公开用于检查用法以及它们被调用的API的测试。也许在测试中有这样的东西:

this.render(hbs`
  {{#call-ajax as |data|}}
    {{test-inspector data}}
  {{/call-ajax}}
`);

虽然,我不知道如何实现这一目标。

有没有关于如何在不打印所有原始字段并进行DOM查找的情况下测试data对象的建议?

答案

您可以通过在Ember.js中的集成测试中向this上下文注册一个帮助程序,并将其作为参数传递给某些机制来存储它们以供以后检查。

我在下面的例子中通过sinon使用ember-sinon,但如果需要,它可以以更香草的方式完成:

const stub = sinon.stub();
const helper = Ember.Helper.helper(stub);
this.register('helper:test-inspector', helper);

this.render(hbs`
  {{#call-ajax as |data|}}
    {{test-inspector data}}
  {{/call-ajax}}
`);

assert.deepEqual(stub.getCall(0).args[0][0], expectedData);

以上是关于在Ember组件的Yielding上下文中测试属性的主要内容,如果未能解决你的问题,请参考以下文章

Ember 验收测试没有看到更新的 DOM

Ember 组件集成测试:`link-to` href 为空

Ember - 组件属性未在模板 hbs 中更新

ember 验收测试等待助手

如何调试在 phantomjs 中运行的 ember-cli 测试

如何在 Ember 模型单元测试中检查属性属性类型?