说我有课
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
问题:如何测试发布新实例将收到的块
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