2013-02-13 3 views
0

Используя Mocha, я завершаю тот же метод, который должен вернуть 2 отдельных значения. Независимо от того, что я делаю, он возвращает только 1 из 2 значений, поэтому 1 из моих тестов rspec всегда терпит неудачу. Как получить заглушку, чтобы вернуть правильное значение в нужное время?Mocha для того же метода должен возвращать 2 разных значения

Код:

describe "#method" do 
    it "has something" do 
    hash = { "allow_sharing" => "1"} 
    CustomClass.stubs(:app_settings).returns(hash) 
    get 'method', :format => :json 
    JSON.parse(response.body).count.should eq(1) 
    end 
    it "does not have something" do 
    hash = { "allow_sharing" => "0"} 
    CustomClass.stubs(:app_settings).returns(hash) 
    get 'method', :format => :json 
    JSON.parse(response.body).count.should eq(0) 
    end 
end 

Я также попытался это так с before блока. Еще не повезло.

describe "#method" do 
    before do 
    hash = { "allow_sharing" => "1"} 
    CustomClass.stubs(:app_settings).returns(hash) 
    end 
    it "has something" do 
    get 'method', :format => :json 
    JSON.parse(response.body).count.should eq(1) 
    end 
# ... etc. 
+0

Вы пробовали вызов 'CustomClass.app_settings' сразу после завершения, чтобы убедиться, что он возвращает ожидаемый хеш? Это может помочь уменьшить проблему и устранить любые сомнения в том, что что-то еще вызывает у вашего ответа неожиданный подсчет. – exbinary

+0

a4rcho, ваше предложение сделало трюк. Ступица работала правильно. Проблема была в самом методе 'get '. Он не проверял значение правильно. –

ответ

1

попробуйте использовать as_null_object, если они доступны. так, например, для всех строк с заглушками:

CustomClass.stubs(:app_settings).returns(hash).as_null_object 
Смежные вопросы