Tet что у меня есть класскак передать блок RSpec «с» ожиданием
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 новый экземпляр получит
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
спасибо
UPDATE: Кажется, это немного непонятно, о чем я спрашиваю здесь, так:
Я ищу способ гарантировать, что Publication.new
был вызван явно с набором аргументов, в этом случае блок
так Я полагаю, что-то вроде этого
Publication.should_receive(:new).with(&block) # example
где параметры блока owner_type == 'Foo' и owner_id == 123
довольно элегантный, thx – equivalent8