備忘録。
外部APIを呼ぶメソッド、処理に時間のかかるメソッドなど、普段のテストでは不要であるメソッドは factory 側で潰すと楽。
FactoryGirl.define do factory :user do transient do stubs [:call_external_api] end after :build do |user, evaluator| evaluator.stubs.each do |m| r = RSpec::Mocks::Matchers::Receive.new(m, -> {}) RSpec::Mocks::AllowanceTarget.new(user).to r end end
もし User#call_external_api
のテストをしたい場合は stubs
を空にすれば良い。
user = build :user, stubs: [] user.call_external_api #=> call_external_api が呼べる。