14. class MailServer def initialize @messages = Array.new end def send(msg) @messages << msg end def number_sent @message.size() end end A Simple Stub
15. A Simple Stub Test it "如果庫存不足,要寄信通知" do order = Order.new("海尼根", 51) mailer = MailServer.new order.set_mailer(mailer) order.fill(warehouse) mailer.number_sent.should eql(1) end
16. A Simple Mock Test it " 如果庫存不足,要寄信通知 " do order = Order.new(" 海尼根 ", 51) warehouse = mock(Warehouse) mailer = mock(MailServer) order.set_mailer(mailer) mailer.have_receive(:send).ordered warehouse.have_receive(:has_inventory). with(any_args()).and_return(false).ordered order.fill(warehouse) # 沒有狀態的測試 end