2010-10-06 25 views
0

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?

Répondre

0

Aha! Le problème est que les attentes échouent effectivement mais que les erreurs qu'elles provoquent sont englouties par le traitement des erreurs du contrôleur. Test que l'action rend correctement fait échouer le test approprié.

+0

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. –