2013-09-30 120 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