【问题标题】:Ruby on Rails Tutorial chapter 9.3.3Ruby on Rails 教程第 9.3.3 章
【发布时间】:2013-10-24 05:11:44
【问题描述】:

我已尝试完成 Ruby on Rails 教程 (http://railstutorial.org) 中的第 9.3.3 章。

每当我运行测试时,它都会说以下内容:

Failures:

  1) Users sign in/out success should sign a user in and out
     Failure/Error: user = Factory(:user)
     ActiveRecord::RecordInvalid:
       Validation failed: Email has already been taken
     # ./spec/requests/users_spec.rb:53:in `block (4 levels) in <top (required)>'

Finished in 5.8 seconds
4 examples, 1 failure

我尝试了各种修复方法,包括重置数据库 - 都使用 rake db:reset 和 rake db:populate。

我将不胜感激。

提前致谢。

【问题讨论】:

  • 能否运行 rake db:reset 然后在 SQL 浏览程序中打开数据库以确认数据肯定不存在,并且生产/开发/测试之间没有冲突数据库?
  • 我想到的一件事是 rake db 任务默认针对您的开发数据库,​​而不是测试数据库。如果您添加断点(gem install 'ruby-debug19' 为您提供了一个半体面的调试器),您可以从调试器中检查测试数据库,并查看测试执行时的实际情况。
  • 如何添加断点?我安装了 gem。

标签: ruby-on-rails


【解决方案1】:

在您的测试运行时,您的测试数据库似乎没有围绕事务进行包装。这导致您的测试数据库在测试运行之间持续存在。在每个规范运行后使用database cleaner 清理您的测试数据库。

【讨论】:

  • 这不起作用 - 即使我将它放入我知道的所有相关文件中,它仍然显示相同的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多