1

我正在使用 RSpec 和 FactoryGirl 编写测试。在我的模型中使用了 DataMappers。在 RSpec 中,我正在测试我的控制器的两个方法更新和索引函数,其中我使用两个对象 A、B 和 C。我使用 FactoryGirl 创建了它们,如下所示:

before(:each) do
  @A = FactoryGirl.create(:A)
  @B = FactoryGirl.create(:B)
  @C = FactoryGirl.create(:C)
end

现在我想在每次测试后用 DataBase Cleaner Gem 清理它们。我在 Google 中搜索过它,但大多数文章都讨论了如何将 DataBase Cleaner Gem 与 A​​ctiveRecord 一起使用,但没有一篇文章明确说明如何将 DataBaseCleaner gem 与 DataMapper 一起使用。因此,如果有人给我使用 DataMapper 的带有 DataBase 清洁器的 RSpec 文件的小示例,我将不胜感激。提前致谢。

4

1 回答 1

2

首先确保您的 Gemfile 和 database_cleaner 中有 dm-transactions 并且在您的规范助手中都需要:

require 'dm-transactions'
require 'database_cleaner'

然后你只需要配置 DatabaseCleaner 来使用 DataMapper 在你的规范助手中使用以下行:

DatabaseCleaner[:data_mapper].strategy = :transaction

您现在可以在规范中使用与此类似的内容,让 DatabaseCleaner 知道事务何时开始以及何时清理:

before :each do
  DatabaseCleaner.start
end

after :each do
  DatabaseCleaner.clean
end

有关 DatabaseCleaner 自述文件的更多详细信息:https ://github.com/bmabey/database_cleaner

于 2013-10-02T06:53:26.233 回答