對我們的代碼做了一些更改,現在我需要重新考慮一些單元測試,以確保它們與新代碼兼容。我遇到了一個問題。在此:如何使用Rhino mock在測試對象中模擬一個值?
ChannelLoad loader = new ChannelLoad(_customerDbMock, _bulkCopyMock);
loader.Execute(taskId);
現在的「加載器」對象,嘗試連接到另一個對象,以得到一個字符串值,而被自動返回的字符串前。所以明顯的解決方案是嘲笑該對象爲測試返回合適的值。然而,由於各種原因,我不能輕易做到這一點。
理想情況下,我希望能夠做到的是獲得一個「真正的」(即如代碼中指定的)加載器對象,該對象執行「真正的」Execute方法,但具有特定的「模擬」值串。但我真的不知道如何做到這一點 - 即使可能 - 與Rhino Mocks。問題中的字符串屬性不是抽象的或任何 - 它是受保護的,它實際上是隻讀的。這是它的外觀裏面的「加載」:
protected string DbConnectionString
{
get
{
return _Service.GetLocalDatabase().GetConnectionString(_Service);
}
}
而問題是,測試環境「GetLocalDatabase」什麼都不返回。
有人幫我在這裏?有沒有一種方法可以使用Rhino Mocks來模擬它,或者是我重構代碼以使其不依賴外部對象的唯一選項?如果後者,指針也會有所幫助。
乾杯, 馬特
如果不進行重大重構,我無法做到這一點 - 是否真的是唯一的選擇? – 2011-01-24 12:23:04