我会去克隆,这条线的一些东西:
before do
@original_connection = ActiveRecord::Base.connection
ActiveRecord::Base.connection = @original_commention.dup
ActiveRecord::Base.connection.extend(App::SomePatch)
end
after do
ActiveRecord::Base.connection = @original_connection
end
我没有测试过,但是只要没有克隆对象的“怪癖”,这就可以了。
编辑:好的,这不起作用,因为没有
connection=
方法,因此您可以尝试模拟:
before do
@original_connection = ActiveRecord::Base.connection
new_connection = @original_connection.dup
new_connection.extend(App::SomePatch)
allow(ActiveRecord::Base).to receive(:connection).and_return(new_connection)
end
你可能不需要
after
因为模拟会被“撤销”