【发布时间】:2013-05-15 11:02:15
【问题描述】:
说我有课
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
【问题讨论】:
标签: rspec2 rspec-rails