如何测试 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
等其他函数,因为我相信第一个函数只在初始渲染时调用一次。
我们的 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
等其他函数,因为我相信第一个函数只在初始渲染时调用一次。