3

我有一个带有一些单选选项的角度页面,该部分看起来像这样(删节):

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');
});

即使测试中的 pause() 清楚地显示选择了兼职,也给了我“全职”。

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

4

1 回答 1

3

我在 Angular 中进行 e2e 测试时遇到了同样的问题。有些作品有点挑剔。我无法让 binding() 与我的表单元素绑定一起工作。我首先尝试了您所做的相同操作,但是单选按钮上的 val 输入选择获取分配给它找到的第一个单选按钮的值,而不是实际选择的单选按钮。

我最终的工作归结为获取具有该名称的输入元素,该名称也被检查,然后查看它的值。这应该适合你。

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

有了绑定的所有功能和模型的使用,您会认为会有更好的解决方案,但我没有找到。相反,我发现自己必须做非常具体的选择器来获取单个元素,然后从那里开始工作。不太理想,但很实用。

话虽如此,关于 e2e 测试的 Angular 页面建议阅读 Protractor,因为他们将来会使用它,所以希望当它准备好时,我们将能够进行更好的 e2e 测试。

于 2013-11-08T16:02:03.290 回答