【问题标题】:Ruby on Rails Tutorial 7.2.2 : rspec failure : action 'create' could not be found for UsersControllerRuby on Rails 教程 7.2.2:rspec 失败:找不到用户控制器的操作“创建”
【发布时间】:2012-03-28 22:49:22
【问题描述】:

尝试单击按钮“创建我的帐户”时 rspec 测试失败,提示“无法为 UsersController 找到“创建”操作。

我假设这是一个 RESTful 问题,它默认为 POST 而不是 GET(或类似的东西)。为什么哦,为什么它会尝试调用“create”而不是“new”?在下一节 - 7.3 - 定义了“创建”操作,但教程说测试应该在 7.2.2 结束时通过。

另一方面,我可能只是遗漏了一些东西。这就是为什么我没有在教程网站上写信给管理员。

我会发布我的代码,但我已经验证它与教程中的示例相同: http://ruby.railstutorial.org/chapters/sign-up?version=3.2#sec:signup_form

【问题讨论】:

  • 我刚刚查看了表单的 HTML 输出,它肯定是 POST。这意味着,RESTfully,该操作是“创建”。所以也许这只是教程中的一个错误。我要硬着头皮发邮件给 Michael(管理员)。
  • 从代码清单 7.20 可以看出,生成的 HTML 实际上显示它是一个 POST 动作。

标签: ruby-on-rails


【解决方案1】:

我知道这很旧,但我也遇到了同样的问题,如果有人需要帮助,我会发布这个。

让我感到困惑的是 7.2.2 中的那句话:“使用这样定义的 @user 变量,注册页面的测试应该再次通过。”但是即使我的代码与示例完全相同,我的测试也失败了。

问题在于,并非所有测试都应该通过 - Hartl 只是在谈论“注册页面”测试。此时“注册”下的一些测试应该会失败。

如果您运行 Hartl 提供的命令,您应该会看到正确的测试确实通过了:

bundle exec rspec spec/requests/user_pages_spec.rb -e "signup page"

我只是太懒了,只输入bundle exec rspec spec/,它也运行了失败的测试。

【讨论】:

【解决方案2】:

不,你没有错过任何东西。您似乎发现了一个轻微的 doco 错误。

确实,Hartl 在 7.3.1 开头就说过“我们的第一步是消除当前在提交注册表单时产生的错误,因为您可以在浏览器中验证或 * 通过运行测试对于使用无效信息的注册 *”(我的重点)。

不过,我希望他也澄清一下,这似乎还有一点。对于格式不正确的电子邮件地址,我也碰巧没有发现任何正则表达式错误。

【讨论】:

    【解决方案3】:

    让我感到困惑的部分原因是,当迈克尔描述新的“注册”测试时,我认为他已经重命名/概括了之前创建的“注册页面”测试。回想起来,我不应该做出这样的假设并意识到他将“注册页面”测试与“注册”测试分开。由于我接受了他之前的建议并且一直在运行guard/spork,因此我的错误更加复杂,所以总的来说我没有从命令行执行测试,因此错过了他包含的具体测试参考。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-20
      • 2013-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多