我正在使用moduleForComponent进行ember-cli qunit测试。我在已经创建的ember组件中有以下select元素。
{{input site as="select"
collection="sites"
selection="site"
optionLabelPath="content.siteLabel"
optionValuePath="content.id"
prompt="Please Select"
label=" "
}}使用store可以找到实际的sites集合。
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进行了测试,一切正常。我想我需要siteMock的某些属性上的另一个when条件,但我不确定是什么。有没有人能给我一些建议让它正常工作?
发布于 2014-11-19 23:23:07
问题似乎是您在paths optionLabelPath="content.siteLabel"中使用了content.,它正在考虑将控制器代理到模型。
但是您的测试使用的是控制器直接-undecorated的模型--并且它们没有content属性。
https://stackoverflow.com/questions/27013505
复制相似问题