Hi I''m struggling to find a neat way to spec this. The Sequel ORM doesn''t support automatically destroying dependent models. It''s easy enough to do in a callback though: class Changeset < Sequel::Model has_many :migrations, :class => DataModel::Migration before_destroy do migrations.each { |m| m.destroy } end # ... end The problem is isolating it from the database to test. I want to know that when I send Changeset#destroy that each migration is destroyed. The implementation of Sequel::Model#destroy (from the RDoc) is this: # File sequel/lib/sequel_model/record.rb, line 325 325: def destroy 326: db.transaction do 327: before_destroy 328: delete 329: after_destroy 330: end 331: self 332: end Now, if a database isn''t wired up, Sequel complains if you do anything database related, and that includes using associations. So the best I have so far is this: describe "#destroy" do before(:each) do # ... @changeset = DataModel::Changeset.new end it "should fire a before_destroy hook to destroy all Migrations" do class << @changeset def destroy before_destroy end end @changeset.stub!(:migrations).and_return( [@migration_1, @migration_2]) @migration_1.should_receive(:destroy) @migration_2.should_receive(:destroy) @changeset.destroy end end So I''ve committed these sins: * redefined someone else''s code, when I depend on the real version at runtime * included an assumption about the external code in my stub * stubbed out a method on the object under test In sort, it''s suckitude of the highest order. But I don''t know how to do this without resorting to an in-memory SQLite database or something. Any help much appreciated. Ashley -- http://www.patchspace.co.uk/ http://aviewfromafar.net/