テトは私がクラスを持っていると言います
Class Foo < ActiveRecord::Base
def set_publication
Publication.new do |publication|
publication.owner_type = 'Foo'
publication.owner_id = 123
end
return 'something else'
end
end
質問: Publication new instance が受け取るブロックをテストするにはどうすればよいですか?
describe Foo, 'set_publication' do
let(:foo){ Foo.new }
it do
Publication.should_recive(:new).with( ??????? ).and_return( double(:something) )
foo.set_publication
end
end
もちろん、これは非常に複雑な機能の例にすぎず、このようなハッシュ引数を使用することはできません
Class Foo < ActiveRecord::Base
def set_publication
Publication.new owner_type: 'Foo', owner_id: 123
return 'something else'
end
end
そして、このようにテストします
describe Foo, 'set_publication' do
let(:foo){ Foo.new }
it do
Publication.should_recive(:new).with( owner_type: "Foo", owner_id: 123 ).and_return( double(:something) )
foo.set_publication
end
end
ありがとうございました
更新:私がここで何を求めているのか少し不明なようです:
Publication.new
一連の引数、この場合はブロックで明示的に呼び出されたことを確認する方法を探しています
だから私はこのようなものだと思います
Publication.should_receive(:new).with(&block) # example
ここで、ブロック パラメーター owner_type == 'foo' および owner_id == 123