2013-09-30 48 views
3

我有一个角页与一些无线电选项结合,该部分看起来像这样(删节):角E2E测试为单选按钮

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你好{{form.worktype} }”的作品,但我似乎无法找到我的端对端测试中选择:

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 

和不同的Appro公司ach也失败了:

it('should select the ', function() { 
    element('a[href$="addWork"]').click(); 
    input('form.worktype').select('parttime'); 
    expect(input('form.worktype').val()).toBe('parttime'); 
}); 

即使在测试中暂停()显示部分时间已选中,也会给我“全职”。

有关如何使这个看似简单的事情通过任何想法?

回答

3

我在Angular中遇到了与e2e测试相同的问题。有些作品有点挑剔。我无法使用binding()来处理我的表单元素绑定。我首先尝试了与之相同的操作,但单选按钮上的val的输入选项会将值赋给它找到的第一个单选按钮,而不是实际选定的单选按钮。

我最终的解决方法是获取具有该名称的输入元素,该元素也被选中,然后查看它的值。这应该适合你。

expect(element('input[name="worktype"]:checked').val()).toBe('parttime'); 

绑定的所有的力量和使用模式,你会觉得会有一个更好的解决办法,但我没有发现。相反,我发现自己必须做非常具体的选择器才能获得单个元素,并从那里开始工作。不那么理想,但功能。

说到这里,the Angular page on e2e testing建议阅读量角器,因为他们将在未来使用它,所以希望在准备好之后,我们将能够进行更好的e2e测试。

+0

不错,我几乎到了那里! – bwobbones

+0

如果使用量角器,则很可能需要在元素中使用by.css定位器,如下所示:element(by.css('input [name =“worktype”]:checked')) – k0nG

+1

'element(by。 css('input [name =“worktype”]:checked'))。getAttribute('value');'如果你使用量角器 – zulucoda