J'utilise Shoulda, Mocha et Test :: Unit pour tester. Je le contrôleur suivant et essai:Comment passent ces deux tests?
class FoosController < ApplicationController
caches_action :show
def show
@foo = requested_foo
end
private
def requested_foo
Foo.find(params[:id])
end
end
class FoosCachingTest < ActionController::IntegrationTest
def setup
@foo = Foo.first
@session = open_session
end
context 'FoosController#show' do
setup do
@session.get('/foos/1')
end
before_should 'not fetch the Foo from the database' do
FoosController.any_instance.expects(:requested_foo).never
end
before_should 'fetch the Foo from the database' do
FoosController.any_instance.expects(:requested_foo).once.returns(@foo)
end
end
end
Comment est-ce que les deux de ces tests pourraient passer? Je n'expire pas explicitement mes moqueurs à tout moment. Mohca et Shoulda sont connus pour interagir mal à cet égard?
Une version récente de Mocha a modifié ses exceptions pour qu'elles soient dérivées d'Exception et non de StandardError - cela pourrait vous avoir aidé dans ce cas, car la gestion des erreurs du contrôleur n'a peut-être pas démarré pour Exceptions. –