我正在使用moduleForComponent
进行ember-cli qunit测试。我在我创建的ember组件中有以下select元素。
{{input site as="select"
collection="sites"
selection="site"
optionLabelPath="content.siteLabel"
optionValuePath="content.id"
prompt="Please Select"
label=" "
}}
使用sites
找到实际的store
集合。
sites : function() {
return this.get('store').find('site');
}.property()
我正在使用jsMockito来模拟store
。
var siteMock = mock(DS.Model);
when(siteMock).get('id').thenReturn(1);
when(siteMock).get('siteLabel').thenReturn('Qunit');
var storeMock = mock(DS.Store);
when(storeMock).find('site').thenReturn([siteMock]);
我将它作为测试中的参数传递给组件。
var component = this.subject({
store : storeMock
});
生成的html看起来像这样,似乎siteMock已经渲染,但optionLabelPath
和optionValuPath
无法正常工作,即使我已经在模拟上添加了适当的期望。
<select id="ember473" class="ember-view ember-select">
<option value="">Please Select</option>
<option id="ember491" class="ember-view" value=""></option>
</select>
我已经在调试器中使用siteMock
上的getter进行了测试,一切都按预期工作。我想在when
的某些属性上需要另一个siteMock
条件,但我不确定是什么。有人可以给我一些建议吗?
答案 0 :(得分:0)
问题似乎是您在路径content.
中使用optionLabelPath="content.siteLabel"
,它正在考虑控制器代理模型。
但是你的测试是直接使用模型 - 由控制器修改 - 他们没有内容属性。