javascript - 用玩笑测试pickadate
问题描述
在 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
- 长的可呈现日期格式。
我们的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 ://amsul.ca/pickadate.js/api/#method-set-select
推荐阅读
- php - Laravel 5.2:启用 laravel-debugbar
- postgresql - postgresql-12中没有where子句有什么方法可以防止更新?
- wpf - WPF 绑定组验证
- sql - 在 SQL 中创建递归查询
- twilio - Twilio - 呼叫转移到客户端 - 无应用程序
- assembly - (PowerPC) 不明白为什么代码将寄存器的内容存储在同一个地址
- javascript - 在javascript中将递增的数字添加到字符串的末尾,这样数组中就没有重复的条目
- php - 将xml值作为数组传递给soap客户端PHP
- c# - DataGridView 未在函数调用中更新
- apache-flink - FLINK WEB UI中不同颜色的含义是什么