Ruby on Rails教程7.2.2:rspec失败:找不到用户控件的操作'create'

时间:2012-03-28 22:49:22

标签: ruby-on-rails

尝试click_button“创建我的帐户”时,rspec测试失败,说“找不到用户控制器的动作'创建'。

我假设这是一个RESTful问题,它默认为POST而不是GET(或类似的东西)。为什么哦为什么要试着称之为'创造'而不是'新'呢?在下一节 - 7.3中 - 定义了'create'动作,但是教程说测试应该在7.2.2结束时通过。

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

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

3 个答案:

答案 0 :(得分:10)

我知道这已经过时了但是我遇到了同样的问题,如果有新的需要帮助的话,我会发布这个问题。

让我感到困惑的是7.2.2中的句子:“如果定义了@user变量,那么注册页面的测试应该再次传递。”但是我的测试失败了,即使我的代码与示例完全相同。

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

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

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

我只是在懒惰,只打了bundle exec rspec spec/,它也运行了失败的测试。

答案 1 :(得分:5)

不,你没有遗漏任何东西。看来你正在捕捉到轻微的doco错误。

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

尽管如此,我还是希望他能够清除这一点,似乎还有更多内容。对于格式不正确的电子邮件地址,我也碰巧没有捕获任何正则表达式错误。

答案 2 :(得分:3)

对我来说,部分困惑是,当Michael描述新的“注册”测试时,我认为他已经重命名/概括了之前创建的“注册页面”测试。回想起来,我不应该做出这样的假设,并意识到他保留了“注册页面”测试,与“注册”测试分开。我的错误更加复杂,因为我已经采用了他早先的建议,并且一直在运行警卫/ spork,所以一般来说我没有从命令行执行测试,因此缺少他所包含的特定测试参考。