Test-Doppelzimmer sind einfacher einzurichten
Slip = Struct.new(:id)
slip = Slip.new(:id => 1)
gegen
slip = double('slip', :id => 1)
Test-Doppel erzeugt informative Fehlermeldungen
require 'spec_helper'
class TooLongError < StandardError; end
class Boat
def moor(slip)
slip.moor!(self)
rescue TooLongError
false
end
end
describe Boat do
let(:boat) { subject }
context "when slip won't accept boat" do
it "can't be moored" do
Slip = Struct.new('Slip')
slip = Slip.new
boat.moor(slip).should be_false
end
end
end
Failure/Error: slip.moor!(self)
NoMethodError:
undefined method `moor!' for #<struct Struct::Slip >
gegen
it "can't be moored" do
slip = double('slip')
boat.moor(slip).should be_false
end
Failure/Error: slip.moor!(self)
Double "slip" received unexpected message :moor! with (#<Boat:0x106b90c60>)
-Test verdoppelt haben eine bessere Unterstützung für die Prüfung
class Boat
def moor(slip)
slip.dont_care
slip.moor!(self)
rescue TooLongError
false
end
end
it "can't be moored" do
Slip = Struct.new('Slip')
slip = Slip.new
slip.should_receive(:moor!).and_raise(TooLongError)
boat.moor(slip).should be_false
end
Failure/Error: slip.dont_care
NoMethodError:
undefined method `dont_care' for #<struct Struct::Slip >
gegen
it "can't be moored" do
slip = double('slip').as_null_object
slip.should_receive(:moor!).and_raise(TooLongError)
boat.moor(slip).should be_false
end
0 failures # passed!
, dass ein paar Beispiele ist - ich Ich bin mir sicher, dass es mehr Gründe gibt, Testdoppelungen zu bevorzugen.
Ich weiß, das hat einige Jahre seit es veröffentlicht wurde, aber gibt es eine Chance, dass Sie nichts dagegen hätten, das Beispiel zu ändern? Ich weiß nicht, was Moor oder Slip mit Booten zu tun hat, und es macht es mir schwer zu versuchen, Dinge herauszufinden. Wenn nicht, danke trotzdem! – SirUncleCid