我一直在試圖爲我的程序寫一些測試,並得到一個奇怪的問題。爲什麼實體在嘗試添加只讀對象時會複製相關項目?
的分貝看起來像一個TableOne許多TableMany(讓我們這麼說)
初始化之前,每個測試是非常簡單的。在每次測試之前刪除現有的並插入新的。一切正常。
[TestInitialize()]
public void MyTestInitialize() // Before every test run.
{
FixtureDbTearDown.TearDown(FixtureDbImport_95.ID);
FixtureDbImport_95.SetUp();
}
然後我決定使用重新使用夾具和清理它。所以我讓所有實體類都是靜態只讀的。
現在,只有第一次測試通過,其他人會在重複鍵上拋出異常。逐個運行測試顯示沒有錯誤。
基本上,這是工作
private static void SetUp_Many(MyEntities entity)
{
TableMany ok1 = new TableMany { smth... };
entity.TableMany.Add(ok1);
}
但是這一次不是。
private static readonly TableMany ok_sr = new TableMany { smth.. };
private static void SetUp_Many(MyEntities entity)
{
entity.TableMany.Add(ok_sr);
}
調試器顯示第二次調用Add(ok_sr)實體會向父級TableOne添加一條記錄。 TableOne是我的一個精確副本,沒有空值和默認值。
好吧,我可以做一個對象複製之前添加,最有可能的問題是與對象複製,因爲我聲明事物只讀。對?
我對TableOne的重複有點困惑。
任何想法?
我不認爲這是因爲它是隻讀的。也許測試共享相同的上下文? – 2014-09-18 16:30:29