Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何获取由测试夹具文件创建的测试用户的用户ID?如何使用该用户id编写断言?_Ruby On Rails_Automated Tests_Fixtures_Assertion - Fatal编程技术网

Ruby on rails 如何获取由测试夹具文件创建的测试用户的用户ID?如何使用该用户id编写断言?

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

我在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 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