我想通過實際點擊數據庫來測試我的真實數據。我實際上正在測試我的Repository類。這是我正在做的一個例子;通過點擊數據庫測試實體框架數據
/// <summary>
/// Summary description for Country
/// </summary>
[TestClass]
public class Country {
public Country() {
_countryRepo = new CountryRepository();
}
private ICountryRepository _countryRepo;
[TestMethod]
public void db_should_return_at_least_one_country_as_approved_all() {
//Act
var model = _countryRepo.GetAll();
//Assert
Assert.IsTrue(model.Count() >= 1);
}
[TestMethod]
public void db_should_return_at_least_one_country_as_approved_true() {
//Act
var model = _countryRepo.GetAll(ApprovalStatus.Approved);
//Assert
Assert.IsTrue(model.Count() >= 1);
}
[TestMethod]
public void db_should_return_Turkey_as_country_name_by_id() {
//Act
var model = _countryRepo.GetSingle(1000);
//Assert
Assert.AreEqual<string>("Turkey", model.CountryName);
}
[TestMethod]
public void db_should_return_Turkey_as_country_name_by_countryISO3166Code() {
//Act
var model = _countryRepo.GetSingle("TR");
//Assert
Assert.AreEqual<string>("Turkey", model.CountryName);
}
[TestMethod]
public void db_should_return_Turkey_as_country_name_by_GUID() {
//Act
var model = _countryRepo.GetSingle(Guid.Parse("9AF174A6-D0F7-4393-AAAD-B168BADEDB30"));
//Assert
Assert.AreEqual<string>("Turkey", model.CountryName);
}
}
這對我的需求很好,但是想知道我是否正在按照本書進行操作。還有其他的模式,我真的應該在這裏。我不想僞造我的數據,這裏真正激烈的是測試我的DAL和真實的生產數據。
是的,你是對的,如果別人會去餐桌並將土耳其國家名稱更改爲別的東西,它會中斷。但我這裏激烈的是測試我的EF代碼是否正常工作。所以,你建議將所有的值加載到變量中,然後再使用它們?它會帶來什麼樣的差異? – tugberk
不是變量。我在啓動時運行SQL來創建數據庫和數據。之後,我的測試運行,它會檢查知識庫是否返回預期值。我確信數據將在那裏,並且我知道該如何預期,因爲我已經寫了SQL(即在測試代碼中)。不同之處在於你不太依賴數據庫的當前狀態。如果某些測試更改了某一行的狀態,則需要將其回滾,因爲下次運行它時,測試可能會失敗。 – goenning
好吧。所以製作數據庫的副本並在本地運行它也可以使用假數據,對吧? – tugberk