Я бы использовал mock_model.
foo = mock(Foo).as_null_object
foo.stub(:bars)
Foo.stub(:first).and_return(foo)
Причиной as_null_object является то, что RSpec вернет false по умолчанию, когда его спросят, зависит ли он от метода, о котором ему не было сказано ожидать.
Если это не сработает, то создайте экземпляр foo.
foo = Foo.create(:example => "data") #Or create with a factory a factory
foo.stub(:bars)
Foo.stub(:first).and_return(foo)
Затем, когда вы выполните:
Foo.first('foobar').bars
, он будет использовать заглушку на линии2, так как первый вызов вернет этот экземпляр foo.