为什么我的测试代码出现错误,但是当我手动访问页面时却没有?

时间:2013-05-20 17:20:17

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

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

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

<%= f.check_box :show_extras %>

这是错误消息:

  

AuthenticationPages登录页面,用于非登录尝试访问受保护    登录后的页面应呈现右页
        失败/错误:click_button“登录”
        ::的ActionView ::模板错误:
          #User的未定义方法`show_extras':0 ...
        #。/ app / views / users / edit.html.erb ...

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

只需添加后续内容,即可在.bashrc中创建别名,并自动完成测试数据库的准备工作:

# ~/.bashrc

alias migrate='rake db:migrate && rake db:test:prepare'

现在,当您准备好迁移数据库时,只需运行migrate即可完成所有操作。不再需要30分钟来弄清楚为什么你的测试没有通过......