我有一个 span 元素,默认情况下为空白,并在页面由 javascript 加载时更新。这很好用 - 但是 assert_select 似乎只能在页面完成加载之前获得初始 HTML。这是预期的行为吗?我究竟做错了什么?
脚手架中的 span 元素生成 _form.html.erb:
...
<span id="confirm_loaded"></span>
...
---- 在 app/assets/javascripts 的 .js 文件中:
$(function(){
$("#confirm_loaded").html("test");
});
---- 当我加载页面时——页面是通过 javascript 更新的,一切都很好。
但是,在集成测试中 - 这一行:
assert_select "span#confirm_loaded", {text: "test"}
失败并出现错误:
<test> expected but was
<>..
Expected 0 to be >= 1.
这似乎确认测试没有看到由 javascript 设置的更新的 HTML 元素(也许它在页面完全加载之前运行?)
快速更改页面,删除 javascript 并对 HTML 进行硬编码:
...
<span id="confirm_loaded">test</span>
...
现在测试通过了(assert_select 能够得到值,我们很成功)。
assert_select 是否只能获取 HTML 标签的初始值?为什么 assert_select在页面加载时没有得到 javascript 更新的值?
谢谢你的帮助。