Ruby on rails 如何获取由测试夹具文件创建的测试用户的用户ID?如何使用该用户id编写断言?
我在ERB文件中有一个表单,它最终将补丁提交到编辑用户路径(@user)。以下是表单的第一行代码(唯一相关的部分是URL): 下面是完整的测试:Ruby on rails 如何获取由测试夹具文件创建的测试用户的用户ID?如何使用该用户id编写断言?,ruby-on-rails,automated-tests,fixtures,assertion,Ruby On Rails,Automated Tests,Fixtures,Assertion,我在ERB文件中有一个表单,它最终将补丁提交到编辑用户路径(@user)。以下是表单的第一行代码(唯一相关的部分是URL): 下面是完整的测试: class UsersEditTest < ActionDispatch::IntegrationTest def setup @user = users(:test_user) # assinging @user to the user in my fixture file end test "Editing user
class UsersEditTest < ActionDispatch::IntegrationTest
def setup
@user = users(:test_user) # assinging @user to the user in my fixture file
end
test "Editing user with invalid user attributes" do
patch edit_user_path(@user), params: {user: { name: "",
email: "foo@invalid",
password: "hey",
password_confirmation: "ho"
}
}
assert_select 'form[action="/users/???/edit"]'
end
class userseditest
我遇到的问题(我想)是,我不知道我的夹具文件中用户的用户ID是什么(assert\u select'form[action=“/users/1/edit”]”
)
有人知道如何找到从设备生成的资源的ID吗?以及如何正确构造
assert\u select'form[action=“/users/???/edit”]”
assertion?看起来您实际上并没有创建用户-您需要使用fixture属性来创建一个类似的用户
@user=user.create(:test\u user)
然后您可以访问创建的用户的属性,即@user.id
对于assert_select URL字符串,您可以使用字符串插值-
assert_select'form[action=“/users/{@user.id}/edit””
但是您拥有用户——如果在URL字符串中有关联id引用它(例如,interpolarion)。
<form action="/users/1/edit" accept-charset="UTF-8" method="post">
<input type="hidden" name="_method" value="patch">
test_user:
name: Mr. Test
email: test@email.com
password_digest: <%= User.digest('password') %>
class UsersEditTest < ActionDispatch::IntegrationTest
def setup
@user = users(:test_user) # assinging @user to the user in my fixture file
end
test "Editing user with invalid user attributes" do
patch edit_user_path(@user), params: {user: { name: "",
email: "foo@invalid",
password: "hey",
password_confirmation: "ho"
}
}
assert_select 'form[action="/users/???/edit"]'
end