2010-02-18 5 views
3

J'ai un test qui doit vérifier si un bloc donné à une méthode est appelé.Comment tester qu'un bloc a été cédé?

block = lambda { 
    #some stuff 
} 
block.should_receive(:call) 

get_data_with_timeout(1, &block) 

def get_data_with_timeout(timeout) 
    begin 
     timeout(timeout) { 
      data = get_data 
      yield data #do stuff 
     } 
    rescue Timeout::Error 
     #timeout! 
    end 
end 

Essentiellement, je veux vérifier que s'il n'y a pas de délai alors le bloc est appelé et inversement. Est-ce possible dans rspec?

Répondre

7

Un modèle commun que j'utilise:

block_called = false 
get_data_with_timeout(1) do 
    block_called = true 
end 
block_called.should be_true 
+0

Gah! Je dois avoir eu mon chapeau C hier. Merci :) – roo

Questions connexes