我被招聘爲SW開發,我試圖進入單元測試與RSPEC和紅寶石RR,但有一個很難決定在特定的策略,主要是因爲我是指定將單元測試寫入已寫入的代碼。Ruby單元測試技術,懲戒和打樁
考慮下面的代碼這是一個大方法的一部分被稱爲方法一:
if (["5234541252", "6236253223"].include?(self.id))
self.DoCheck
logs.add 'Doing check', "id = #{self.id}"
return
end
的方法,這部分的相關單元測試會一直是這樣的:
"should do check only if id = 5234541252 or 6236253223"
但我遇到幾個問題,基本上涉及最佳實踐,例如:
如何檢查DoCheck已經使用RR和RSPEC從「method1」中調用?
我使用dont_allow(對象).DoCheck嘗試,但它不會工作。
describe :do_route do
it "should do check only if id = 5234541252 or 6236253223" do
user = Factory(:User)
user.id = "5234541252"
dont_allow(user).DoCheck
user.method1
end
如果「DoCheck」被調用或沒有被調用,還有其他方式可以得出結論嗎?
這是「大方法的一部分」,這是一個巨大的紅旗。爲了更好,更簡單,更有效的測試,需要對代碼進行重構。此外,我懷疑許多其他問題,如使用InitialCaps的方法名稱所證明的。 –
我完全同意,但不幸的是,重構代碼目前無法解決問題。 –
什麼?如果他們不願意改進代碼,他們希望進行單元測試。 –