2011-07-19 42 views
7

我使用水豚1.0.0進行驗收測試,並且非常喜歡它,直到我卡在一個地方。我的問題是我用jQuery datepicker,現在我很困惑如何從datepicker中選擇日期在我的測試規範。在水豚測試中使用日期選擇器的問題

任何幫助將不勝感激。

+6

我們也有類似的問題,我們的解決方案是剛剛輸入的日期到日期選擇器的文本字段,而不是嘗試點擊日曆彈出窗口。理由是我們不想測試jQuery代碼 - 我們正在測試我們的代碼。 /平底船! – jaydel

+0

今天我做了同樣的事情,甚至不想嘗試使用datepicker本身。另外,我正在編寫測試工作應用程序(淘氣,我知道),我已經知道日期選擇器的功能正常。 – Tass

+0

謝謝你們,也一樣:) – kxhitiz

回答

24

也許這是一個好主意,因爲日期格式保存到數據庫時可能會導致問題。以下是我的做法:

page.execute_script %Q{ $('#auction_event_date').trigger("focus") } # activate datetime picker 
page.execute_script %Q{ $('a.ui-datepicker-next').trigger("click") } # move one month forward 
page.execute_script %Q{ $("a.ui-state-default:contains('15')").trigger("click") } # click on day 15 

測試必須使用javascript驅動程序運行。

+1

這應該被接受!這是問題的答案。 –

+0

好奇如何可以從他們的下拉列表中選擇一個特定的月份。 – Trip

+0

這個工程很漂亮。 – darethas

2

我不喜歡使用javascript。如果Rails.env.test只顯示alt字段?並直接與水豚瞄準alt。

我創建了一個輔助方法,用於生成日期選擇器輸入和隱藏字段(它有點長,我認爲沒有必要將其全部顯示出來)。在該方法中使用:

def date_picker(options={}) 

    alt_field = Rails.env.test? ? "string" : "hidden" 
    input = "#{ options[:f].input options[:field], as: alt_field.to_sym, input_html: {id: "#{options[ 

的「爲:alt_field.to_sym」就是公開date_picker隱藏的中高音域。然後我就可以瞄準ALT現場輸入(這是一個由模型處理)的水豚用:

fill_in 'userdoc[issued_date]', with: "2013-05-02 

簡單,還算乾淨,沒有的JavaScript ...

0

看我的例子,也許它幫助你

find("input.form-control.date-mask[ng-model='scope.values.created_at.start']").set(Date.yesterday) 
+0

這看起來像一個AngularJS解決方案。你確定這個問題適合這個問題嗎? –

0

無論出於何種原因page.execute_script從上面的答案不適合我。然而,這是讓日曆開放的一種很不方便的方式。

#trigger opening of calendar  
fill_in('#auction_event_date', with: "2013-05-01) 
#select specific day 
click_link("27")