2016-10-02 80 views
0

我是一個相當新的Ruby,這是我在stackoverflow上的第一個問題,所以請耐心等待我的嘿嘿。在Rspec中使用double作爲對象的實例變量

我正在努力通過使用雙重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的使用let(:平面){雙:平面}
但我不知道如何爲變量plane_number使用double。

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(我得到這個錯誤信息的測試失敗:收到的飛機:雙意外的消息:飛機編號與(無參數))

我相信這是一件很簡單的事情,但我似乎無法找到正確的答案。

+0

'雙:平面,plane_number:10' –

回答

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 
相關問題