0
は私はこのようなモデルを持っている:私はdo_stuff
が適切に右引数とmethod_one
とmethod_two
の方法を実行していることをテストするにはどうすればよい非ActiveRecordモデルをRailsにスタブする方法は?
class Thing
class << self
def do_stuff(param)
result1 = method_one(param)
result2 = method_two(result1)
end
def method_one(param)
# tranformation
end
def method_two(result1)
# transformation
end
end
end
?私はmock_model/mock_classを試してきましたが、それらは私には分かりません。私はドキュメントを読んだが、私はまだそれを理解するのに苦労している。
require 'rails_helper'
RSpec.describe Thing, type: :model do
let!(:param) { create(:param) }
describe '#do_stuff' do
thing = double('thing')
expect(thing).to receive(:method_one).with param
thing.do_stuff param
end
end
なぜこれが動作しません。
私のテストでは、このようになりますか? 私が受け取るエラーは、予期せぬメッセージのパラメータを受け取ったことです。しかし、それはかなり期待され、それがテストでした。どこが間違っていますか?
。もっとsuccintlyするには、クラスメソッドはインスタンスではなくクラスに対してスタブされなければなりません。 – jaydel
優秀ありがとう!それは理にかなっています(テストを実行する時間をとっていただければ幸いです)。 – user3162553