我正在学习Hartl Rails教程,并完成了9.60、9.61和9.62中的练习,这些练习要求重构新的表单代码,并用新的分部编辑表单代码。表单现在使用"提供"来提供按钮文本,如下所示:
<% provide(:button_text, 'Create my account') %>
在页面上以"收益率"呈现,如所示
<%= f.submit yield(:button_text), class: "btn btn-primary" %>
虽然不是练习的一部分,但我并不是想写一个集成测试来测试每个页面按钮上的正确文本。例如,此代码将测试注册表单页面:
test "signup page" do
get signup_path
assert_select "title", full_title("Sign up")
assert_select "input[type=submit]", value: "Create my account"
end
然而,我还没能找出正确的代码来选择按钮并为按钮文本指定正确的值。我让按钮文本不正确,试图让测试失败,但没有找到在失败时成功的正确测试语法;-)
ActionDispatch的文档中没有对这个测试用例有帮助的特定示例。
Ok找到了我自己的答案。选择按钮并验证文本的正确方法:
test "signup page" do
get signup_path
assert_select "title", full_title("Sign up")
assert_select "input[value=?]", "Create my account"
end
我学到的是1。元素的属性应该用方括号括起来。2.使用"attribute=?"将该属性值与您正在测试的值相匹配:在本例中,"创建我的帐户"