ruby-on-rails - 如何使用带有 Rails 4 的 rspec 检查记录是否保存在数据库中?

标签 ruby-on-rails rspec

用户注册成功后,如何编写规范以检查是否在数据库中创建了新记录?在带有 capybara、factorygirl 和 database_cleaner gem 的 Rails 4 中使用 rspec。

我觉得这种情况很常见,应该很容易找到答案,但我无法在这里或通过谷歌找到答案。

最佳答案

您可能想要 change matcher
您将执行以下操作:

expect { 
  post :create, :user => {:user => :attributes }
}.to change { User.count }
或者
expect { 
  post :create, :user => {:user => :attributes }
}.to change(User, :count)
这段代码说:
期望运行这第一个代码块来更改我运行该代码块时得到的值
并且在功能上等同于写作:
before_count = User.count
post :create, :user => {:user => :attributes }
expect(User.count).not_to eq(before_count)

关于ruby-on-rails - 如何使用带有 Rails 4 的 rspec 检查记录是否保存在数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30158710/

相关文章:

ruby-on-rails - 使用 RSpec 测试 Controller 中的实例变量

ruby - 禁用将输出放入 RSpec

ruby-on-rails - 无论如何要访问 Rails 控制台中的连接表?

ruby-on-rails - 功能测试中的路由问题

javascript - 无法在rails上应用js效果

sql - ActiveRecord 中多列的索引

ruby-on-rails - 为什么 Fixture_file_upload 在 RSpec 中不可用(没有 ActiveRecord)?

ruby-on-rails - RSpec 异常后继续

ruby-on-rails - 嵌套模型和父验证

ruby-on-rails - Spork 无法启动,因为没有要加载的此类文件 -- spork (LoadError)