【问题标题】:Why Is there an Error for my Test Code but not When I visit the Page Manually?为什么我的测试代码有错误,但当我手动访问页面时却没有?
【发布时间】:2013-05-20 17:20:16
【问题描述】:

我有一个基于Rails Tutorial 的网站。我在我的用户模型中添加了一个名为“show_extras”的布尔属性,并在用户配置文件页面中添加了一个复选框。我的测试现在在到达提及“show_extras”属性的代码时失败,例如“编辑用户”页面。当我手动访问该页面时,我没有收到任何错误。怎么了? (我尝试重新设置,但没有帮助。)

这是导致错误的代码行之一(在编辑页面上):

<%= f.check_box :show_extras %>

这是错误信息:

AuthenticationPages 未登录尝试访问的登录页面受保护 登录后的页面应该呈现正确的页面
失败/错误:click_button“登录”
ActionView::Template::错误:
#User:0 的未定义方法“show_extras”...
# ./app/views/users/edit.html.erb...

【问题讨论】:

    标签: ruby-on-rails testing integration-testing runtime-error


    【解决方案1】:

    这可能是因为测试数据库当前在 User 表中没有 show_extras 列,而开发数据库有。

    你最近有rake db:test:prepare吗?您可能必须运行它才能在数据库中创建新列。

    【讨论】:

      【解决方案2】:

      只是一个后续补充,您可以在.bashrc 中创建一个别名,然后将自动完成测试数据库的准备工作:

      # ~/.bashrc
      
      alias migrate='rake db:migrate && rake db:test:prepare'
      

      现在,当您准备好迁移数据库时,只需运行 migrate 即可完成所有工作。不再需要 30 分钟来找出您的测试未通过的原因....

      【讨论】:

      • @garbagecollection 很高兴为您提供帮助。我希望这是一个原创的想法,但我在几年前的一本书中找到了它。虽然我不记得是哪一个了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-19
      • 2022-09-28
      • 2016-09-18
      • 1970-01-01
      • 1970-01-01
      • 2023-01-14
      相关资源
      最近更新 更多