2013-08-09 6 views
2

Я знаю, что есть способ, чтобы иметь возвращаемый окурок несколько различных значений, как это:Как можно исключить исключение и исключить исключение только один раз?

subject.stub(:method_call.and_return(1,2,3) 

Но я надеялся, что-то подобное можно было бы:

subject.stub(:method_call).and_raise(Exception).once 
subject.stub(:method_call).and_return(1) 

Но у меня нет нашел изящный способ заставить заглушку только вызвать исключение в первый раз, когда он называется. Предложения?

ответ

4

Единственный способ, которым я знаю, чтобы сделать это с переменной счетчика, как это:

counter = 0 
times = 2 
TestModel.any_instance.stub(:some_method) do 
    (counter += 1) <= times ? raise(Exception) : 1 
end 

, которые будут выводить так:

test = TestModel.new 
test.some_method 
=> Exception 
test.some_method 
=> Exception 
test.some_method 
=> 1 
Смежные вопросы