我是Ruby上的新手,这是我关于stackoverflow的第一个问题,所以请耐心等待我。
我正在努力通过双重传递Rpec测试。
我有一个类Plane,它的初始化方法@plane_number = plane_number有一个attr_reader:plane_number。 attr_reader:plane_number
Class Plane
def initialize
@plane_number = plane_number
end
end
我在另一个机场类中使用此变量来引用一个特定的平面,其中的平面编号在一个字符串消息中。我的代码中的字符串示例是:
class Airport
def confirms_landed(plane)
"The plane #{plane.plane_number} has landed"
end
end
我用Rspec创建了一个测试,使用double作为平面实例,使用let(:plane){double:plane}
但我不知道如何使用double作为变量plane_number。
describe Airport do
let(:plane) {double :plane}
it "confirms a plane has landed" do
subject.confirms_landed(plane)
expect(subject.confirms_landed(plane)).to eq("The plane #{plane.plane_number} has landed")
end
end
代码工作正常并返回带有平面编号的正确字符串,但测试失败,因为我没有为变量plane_number分配一个double(我收到此错误消息:Double:plane收到意外消息:plane_number (没有args))
我确信这是一个非常简单的修复方法,但我似乎无法找到正确的答案。
答案 0 :(得分:1)
从我所看到的,你只是错过了双重
上的平面编号方法class Airport
def confirms_landed(plane)
"The plane #{plane.plane_number} has landed"
end
end
describe Airport do
let(:plane) { double(:plane, plane_number: 56) }
it "confirms a plane has landed" do
expect(subject.confirms_landed(plane)).to eq("The plane 56 has landed")
end
end