[英]Testing pickadate with jest
在 Rails 項目中,我們有一個使用pickadate
v3.6.2 的日期選擇器。 測試已經進行了一段時間,但隨着最近從moment.js
到luxon.js
一些功能規范失敗了。 IRL,功能正常。 我認為這是關於我們如何設置日期輸入。 我正在嘗試獲得正確的功能來驅動capybara
設置日期輸入。
日期輸入在一個已初始化的表單元素中
$("#the_date_input").pickadate()
和消費腳本工作(IRL)如下:
const startDateField = this.element.find(this.opts.the_date_inputs_field);
const datePicker = startDateField.pickadate('picker');
if (datePicker) {
// this logs the correct value in the browser console
console.log(datePicker.get('select', 'yyyy-mm-dd'));
...
}
瀏覽器中的日期格式看起來像12, October, 2020
年12, October, 2020
- 很長的日期格式。
我們的capybara
代碼嘗試設置值Rails
默認to_date
字符串格式,我認為是YYYY-MM-DD
。
page.execute_script("$('#the_date_input').val('#{start_date.to_date}');")
我需要將val
格式化為長英文日期字符串嗎? 或者有沒有更好的方式使用pickadate
在這些測試中注入值或設置值(使用 JS)。
雖然更好的解決方案是構建一些代碼來與日期選擇器交互(就像普通用戶 - 正如上面@Thomas Walpole 提到的那樣),但以編程方式與日期選擇器模式交互很棘手。
我找到了一個解決方案 - 也許並不理想 - 但您可以使用pickadate
select
方法來指定日期。 這貫穿pickdate
代碼以正確設置輸入值以及引擎蓋下發生的任何其他事情。
這是我的水豚輔助方法:
def set_pickadate_date(pickadate_selector, date)
page.execute_script("$('#{pickadate_selector}').pickadate('picker').set('select', [#{date.year}, #{date.month - 1}, #{date.day}]);")
end
我通過pickadate
文檔發現了這一點: https : pickadate
您還可以查看<%= form.date_field :date_attribute %>
- 它將使用所有主要瀏覽器都支持的本機日期選擇器。
見https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/date
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.