Сегодня я столкнулся с проблемой использования RoR для блокировки вызовов AR-объектов. Я думал, что смогу сделать что-то вроде:
stub.instance_of(BankAccount).save_to_other_spot { true }
Однако, когда я попробовал этот метод, он, похоже, совсем не заглушил метод, и в итоге запустил оригинальный метод, который я пытался заглушить. Я подтвердил это с помощью отладчика и т. Д.
Итак, я использовал следующий метод:
stub.proxy(BankAccount).find(anything) do |account|
stub(account).save_to_other_spot { true }
account
end
Это работает.
Мне было интересно, делаю ли я что-то не так? Почему instance_of не работает так, как я ожидаю?
Другая проблема, с которой я столкнулся, заключалась в том, что в моих тестах RSpec мне приходилось настраивать свои макеты и заглушки для каждого запроса. Опять же, это нормально или я что-то не так делаю?
Под этим я подразумеваю, что мне нужно сделать что-то вроде:
... mock and stub ...
get :show, :id => @id
... mock and stub ...
post :update, :id => id, :account => { ... params ... }
Я думал, что смогу посмеяться и заглушить один раз наверху.