如何测试 ember 组件是否缺少参数?

How to test if an ember component is missing a parameter?

我们的 handlebars 文件中有一个看起来像这样的按钮组件。

{{some-button link="goes-to-here"}}

它本质上与 {{#link-to}} 相似,只是功能多了一点。我们最近在我们的网站上发现一个按钮坏了,因为它缺少 link 参数。我想知道是否有一种方法可以测试或强制我们的 link 参数始终被填写。我不确定如何测试这个,或者是否可能。

完整代码

component.js

import Component from '@ember/component';

export default Component.extend({
});

component.hbs

<div class="row c2a mt50px">
  <div class="col-md-12">
    {{#link-to "contact" link class="btn btn-primary btn-lg" }}{{this.buttonText}}{{/link-to}}
  </div>
</div>

我最终通过使用 @PatsyIssa 提到的断言以及 didReceiveAttrs 来实现它。

import Component from '@ember/component';
import { assert } from '@ember/debug';

export default Component.extend({
  buttonText: 'REQUEST A SAMPLE',
  didReceiveAttrs() {
    assert('Component must contain link of some kind', this.link != null);
  },
});

我喜欢使用 didReceiveAttrs 而不是 didRender 等其他函数,因为我相信第一个函数只在初始渲染时调用一次。