ruby中的Struct与testdouble
在结构上使用rspec double的优缺点是什么?比如说ruby中的Struct与testdouble,ruby,rspec,mocking,Ruby,Rspec,Mocking,在结构上使用rspec double的优缺点是什么?比如说 before :each do location = double "locatoin" location.stub(:id => 1) end vs 测试双打更容易设置 Slip = Struct.new(:id) slip = Slip.new(:id => 1) vs 双重测试生成更多信息性错误消息 require 'spec_helper' class TooLongError < Standar
before :each do
location = double "locatoin"
location.stub(:id => 1)
end
vs
测试双打更容易设置
Slip = Struct.new(:id)
slip = Slip.new(:id => 1)
vs
双重测试生成更多信息性错误消息
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
0次失败#通过代码>
这是几个例子——我相信有更多的理由选择双打。我知道这篇文章自上次发布以来已经有几年了,但你是否介意更改一下这个例子?我不知道荒野或滑倒跟船有什么关系,这让我很难去想办法。如果没有,谢谢你!如果您更喜欢struct,您可以使用OpenStruct.new(id:1)作为一个单行程序来设置它。
slip = double('slip', :id => 1)
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>)
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 >
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