我在寫一個使用DDD技術的應用程序。這是我第一次嘗試DDD項目。這也是我的第一個綠地項目,我是唯一的開發者。我充實了域模型和用戶界面。現在我開始持久層。像往常一樣,我從單元測試開始。我在數據持久層中需要多少抽象級別?
[Test]
public void ShouldAddEmployerToCollection()
{
var employerRepository = new EmployerRepository();
var employer = _mockery.NewMock<Employer>();
employerRepository.Add(employer);
_mockery.VerifyAllExpectationsHaveBeenMet();
}
正如你所看到的,我沒有寫任何對Add()函數的期望。我得到了這一點,並意識到我還沒有解決特定的數據庫供應商。實際上,我甚至不確定它需要一個數據庫引擎。平面文件或xml可能同樣合理。所以我不知道我的下一步應該是什麼。
我應該添加一個抽象層......說一個DataStore接口或尋找一個已經爲我工作的現有庫嗎?如果可以的話,我想避免將程序綁定到特定的數據庫技術上。
針對存儲庫接口的+1 – 2009-11-03 14:37:12
EmployerRepository實際上實現了IEmployerRepository接口,該接口公開CRUD操作。你是否建議我應該實現數據庫感知的具體類,如SQLServerEmployerRepository,OracleEmployerRepository,FlatFileEmployerRepository等,直到我決定數據庫技術? – 2009-11-03 14:49:37
在這種情況下,我試圖TDD我的方式來實施IEmployerRepository,但我想我不能這樣做,除非我要在存儲庫下面添加另一個抽象級別(這似乎沒有添加任何有用的東西),編寫和測試幾個數據庫相關的實現,或者選擇一個數據庫並堅持使用它。 – 2009-11-03 15:08:00