Ruby on Rails教程 - 第11章 - 在集成测试示例中获取错误

时间:2017-10-14 02:36:26

标签: ruby-on-rails

我正在尝试在Ruby on Rails教程书中执行第11章,当我尝试在清单11.33中进行集成测试时,我得到两个错误,它们都说" param丢失或值为空:user&# 34 ;.然后在用户控制器定义中列出两行,第一行是对user_params的引用,第二行是对控制器中的create动作的引用。我查看了其他一些问题并根据我尝试删除user_params定义的require(:user)部分的答案,这导致集成测试从有两个错误变为失败。但我不想从user_params定义中删除require(:user)。有谁知道我为什么会收到这个错误?以下是测试中创建错误的部分:

test "valid signup information with account activation" do
get signup_path

assert_difference 'User.count', 1 do
  post users_path, params: { user: { name: "Example User",
      email: "user@example.com",
      password: "password",
      password_confirmation: "password" } }
end

以下是user_params的定义,除了此测试

之外
def user_params
params.require(:user).permit(:name, :email, :password, :password_confirmation)
end

1 个答案:

答案 0 :(得分:0)

我发现了问题。我通过safari在线书籍和免费在线版本比较了我在线阅读的教程书的版本,发现在那个版本中他们改为使用:

post users_path, user: { name: "Example User",

其中params:{}已从用户周围删除:{} 这一改变使错误消失了。