【发布时间】:2021-02-10 11:44:14
【问题描述】:
在 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)。
【问题讨论】:
-
这里的正确解决方案是停止使用
execute_script与您的页面进行交互,而是像用户一样在pickadate 小部件中选择日期 -
是的。那会更好。呃... :D
标签: javascript ruby-on-rails capybara pickadate luxon