我已经设置了这个组件(精简到最低限度):
<a href={{href}}>{{text}}</a>
{{#if template}}
<button {{action "toggleSubmenu"}} class="global-nav-toggle-submenu">
<i class="caret-down"></i>
</button>
{{/if}}
而这个测试:
test('has a toggle button if a submenu is present', function(assert) {
var component = this.subject({
template: Ember.HTMLBars.compile('<ul class="global-nav-submenu"></ul>')
});
assert.ok(this.$().find('.global-nav-toggle-submenu').length);
});
这运行良好,但我收到了来自 Ember 的弃用通知:
不推荐访问“模板”
<app-name@component:global-nav-item::ember540>
。要确定是否指定了块,<app-name@component:global-nav-item::ember540>
请在组件布局中使用“{{#if hasBlock}}”。
当我更改要使用的模板时hasBlock
:
<a href={{href}}>{{text}}</a>
{{#if hasBlock}}
<button {{action "toggleSubmenu"}} class="global-nav-toggle-submenu">
<i class="caret-down"></i>
</button>
{{/if}}
测试失败。登录this.$()
到控制台显示hbs
模板文件似乎忽略了template
我以编程方式添加的内容。
在测试中,我尝试template
用block
, layout
, hasBlock
,content
等换出,但没有成功。我也尝试过初始化subject
with hasBlock: true
。
在应用了块的常规开发应用程序中加载页面时,逻辑运行良好:
{{#global-nav-item text="Hello" href="#"}}
Some Content
{{/global-nav-item}}
为了测试这个逻辑,我应该以其他方式在单元测试中设置我的组件吗?