我有一个带有一些无线电选项的角度页面,该部分看起来像这样(删节):
div.row-fluid(ng-controller="SearchCtrl")
...
form(name="pForm")
...
div.span4
input(ng-model='form.worktype', type='radio', value='fulltime', name='worktype')
| Full Time
input(ng-model='form.worktype', type='radio', value='parttime', name='worktype')
| Part Time
p hello {{form.worktype}}
表格有效,“p hello {{form.worktype}}”有效,但我似乎无法在我的e2e测试中找到选择:
it('should select the ', function() {
element('a[href$="addWork"]').click();
input('form.worktype').select('parttime');
expect(binding('form.worktype')).toBe('parttime');
});
返回:
Binding selector 'form.worktype' did not match
并且另一种方法也失败了:
it('should select the ', function() {
element('a[href$="addWork"]').click();
input('form.worktype').select('parttime');
expect(input('form.worktype').val()).toBe('parttime');
});
给我“全时”,即使测试中的暂停()清楚地显示选择了部分时间。
关于如何使这个看似简单的事情的任何想法都通过了?
答案 0 :(得分:3)
我在Angular中遇到了与e2e测试相同的问题。有些部分有点挑剔。我无法使用binding()来处理表单元素绑定。我首先尝试了你做的同样的事情,但是单选按钮上的val输入选择获取分配给它找到的第一个单选按钮的值,而不是实际选择的那个。
我最终的工作归结为获取具有该名称的输入元素,该元素也被检查,然后查看它的值。这应该适合你。
expect(element('input[name="worktype"]:checked').val()).toBe('parttime');
凭借绑定的全部功能和模型的使用,您会认为会有更好的解决方案,但我没有找到。相反,我发现自己必须做非常具体的选择器来获得一个单独的元素,并从那里开始工作。不太理想,但功能强大。
话虽如此,the Angular page on e2e testing建议阅读Protractor,因为他们将来会使用它,所以希望在准备就绪后,我们将能够进行更好的e2e测试。