我有一個主持人:打樁一個演示模型不能正常工作
class MyPresenter < Decorator
. . .
def items
. . .
end
# a method being tested which uses the above method
def saved_items
items.reject { |m| m.new_record? }
end
end
及其測試:
describe MyPresenter do
. . .
describe "#saved_items" do
subject { MyPresenter.new(container) }
it "doesn't include unsaved items" do
# I want to stub items method:
subject.should_receive(:items).and_return([])
subject.saved_items.should == []
end
end
end
出於某種原因,本次測試失敗,出現以下錯誤:
1) MyPresenter#saved_items doesn't include unsaved items
Failure/Error: subject.saved_items.should == []
Double received unexpected message :items with (no args)
# ./app/presenters/my_presenter.rb:35:in `items'
# ./app/presenters/my_presenter.rb:42:in `saved_items'
# ./spec/presenters/my_presenter_spec.rb:78:in `block (3 levels) in <top (required)>'
它爲什麼失敗?爲什麼它會調用items
方法,儘管我已將它存根?
我想我明白了,你有一個代表物品權的方法嗎?你的容器是雙重的? – apneadiving
容器是雙重的,是的。不確定委託方法,'items'實質上是在ItemPresenter中包裝容器的items集合。 –