我正在編寫的一些庫中的一些關鍵功能圍繞着當您將它提供的某些類進行子類化時發生的情況。如何爲類定義編寫Ruby單元測試?
我嘗試在編寫任何實際代碼之前編寫單元測試,只要我正在實現新功能。然而,很多東西我需要做的就是這樣的事情:
class Hand < FancyDocument
push_to $handDB
end
class Foot < FancyDocument
push_to $footDB
end
一個我想測試的東西就是類方法是否在首位的作品,具有測試是否實例方法之前,該班表現正常。
但是在Ruby中你不能在方法內定義類,所以我不知道如何測試它。我可以將它們放入我的測試類中,觀察是否引發錯誤,但這不是很優雅,並且拋棄了使用適當測試框架的許多優點。如果我在將來推出一些其他代碼來打破這一點,那麼究竟是什麼破解以及爲什麼會更不明顯。
有沒有辦法解決這個問題?我應該使用標準測試/單元庫以外的東西嗎?
您的基類中是否有任何實現正在創建?你是否提供了一些接受這些基類實例的代碼,並對這些實例進行操作?關閉袖口,聽起來好像你正在爲抽象基類編寫單元測試。你不能單元測試抽象的東西。您只能測試使用抽象的具體事物(例如接受抽象基類或派生的具體類的相關類)。 –
模擬對象庫通常用於解決「我無法在單元測試方法內創建類」問題。我不知道紅寶石,所以我不能告訴你是否需要這樣一個庫(或者如果這樣的庫存在),或者如果你可以使用內置功能來完成相同的事情。 –
模擬對象框架僅用於幫助測試不同組件之間的交互......它並不真正解決測試抽象基類的問題。在我用過的所有語言中,你通常只是在測試中定義一個子類,儘管它是一個具體的子類。但是,Ruby可以創建一個在測試結束時被丟棄的臨時類。 – d11wtq