Да. В зависимости от того, как вы пишете свои тесты, кеш запросов Rails может иногда мешать. Иногда rails достаточно умен, чтобы отслеживать, когда кэш должен быть очищен (когда существует очевидная связь между объектами), но вот пример, который не будет вести себя как ожидалось:
user.posts.should == []
Post.create(:user_id => user.id)
user.posts.size.should_not == [] # Fails, since the original query was cached.
В общем, если вы выполняете один и тот же запрос дважды в одном и том же тесте, вы должны вызвать .reload для данных перед попыткой выполнить второй запрос. Вот так:
user.posts.should == []
Post.create(:user_id => user.id)
user.posts.reload
user.posts.size.should_not == []
По моему личному опыту, лучше рассмотреть другой способ написания теста, чем использовать метод, описанный выше. Например, вот лучший способ написания вышеупомянутого, который не будет затронут кешем запросов:
lambda { Post.create(:user_id => user.id) }.should_change(user.posts, :count).by(1)