簡體   English   中英

用玩笑測試pickadate

[英]Testing pickadate with jest

在 Rails 項目中,我們有一個使用pickadate v3.6.2 的日期選擇器。 測試已經進行了一段時間,但隨着最近從moment.jsluxon.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, 202012, 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM