Testi çiftler kurmak daha kolaydır
Slip = Struct.new(:id)
slip = Slip.new(:id => 1)
vs
slip = double('slip', :id => 1)
Testi çiftlerde daha bilgilendirici hata iletileri
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 >
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>)
Testi çiftler var vs üretmek Test için daha iyi destek
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 >
vs birkaç örnek
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!
- Ben Eminim test çiftlerini tercih etmek için daha fazla sebep vardır.
Sonuncusu yayınlandığından bu yana birkaç yıl geçtiğini biliyorum, ancak bu örneği değiştirmenin sakıncası olmaz mı? Kayıkların ya da kaymaların teknelerle ne ilgisi olduğunu bilmiyorum ve bir şeyleri anlamaya çalışmak benim için zor oluyor. Değilse, yine de teşekkürler! – SirUncleCid