Как удалить объекты (в базе данных и в памяти), которые вы создали
- после каждого теста
 - И после каждого контекста? (в контексте может иметь смысл строить тесты друг на друге)
 
Есть ли способ сделать это автоматически?
У меня есть следующая проблема:
Каждый тест сохраняет записи в базе данных. Следующий тест зависит от этих записей. Даже если бы я хотел создать тесты, зависящие от других тестов, я не смог бы, потому что порядок, в котором выполняются тесты, не контролируется.
factories.rb:
sequence(:name) { |n| "purchaser #{n}" }      
organization_spec.rb:
context "when no supplier exists" do
  it "finds no associated suppliers" do
    purchaser = create(:organization_purchaser)                
    purchaser.partners.empty?.should == true
  end
end
context "when one supplier exists" do
  it "finds one associated suppliers" do
    purchaser = create(:organization_purchaser)      
    supplier = create(:organization_supplier)
    partnership = create(:partnership, organization: purchaser, partner: supplier)         
    purchaser.partners.last.name.should == "purchaser 1"
  end
end
context "when two suppliers exist" do        
  it "finds two associated suppliers" do
    purchaser = create(:organization_purchaser)      
    2.times do |i|
      supplier = create(:organization_supplier)
      partnership = create(:partnership, organization: purchaser, partner: supplier) 
    end    
    purchaser.partners.last.name.should == "purchaser 2"
  end
end
Выход RSpec:
Organization
  #suppliers_for_purchaser
    responds
    when no supplier exists
      finds no associated suppliers
    when two suppliers exist
      finds two associated suppliers
    when one supplier exists
      finds one associated suppliers (FAILED - 1)
Failures:
1) Organization#suppliers_for_purchaser when one supplier exists finds one associated suppliers
 Failure/Error: purchaser.partners.last.name.should == "purchaser 1"
   expected: "purchaser 1"
        got: "purchaser 3" (using ==)