2017-07-07 47 views
0

我有一個測試是假設得到一個任務定義(任務描述)的編輯任務的測試方法:System.Data.Entity.Infrastructure.DbUpdateException問題

[TestMethod] 
public void GetTaskDefinitionsForEdit_HavingTaskDefinitions_ReturnsChecklistTaskDefinitions() 
{ 
    // this.CreateChecklistTaskDefinition(referenceKey: "Xxx123", description: "SomeDescription"); 
    // this.checklistTaskTestHelper.CreateChecklistTaskDefinition(referenceKey: "Yyy234", description: "SomeOtherDescription"); 

    this.helper.CreateChecklistTaskDefinition(referenceKey: "Xxx123", description: "SomeDescription"); 
    this.helper.CreateChecklistTaskDefinition(referenceKey: "Yyy234", description: "SomeOtherDescription"); 

    this.CompanyDbContext.SaveChanges(); 

    //var result = this.checklistTaskTestHelper.checklistTaskDefinitionRepository.GetTaskDefinitionsForEdit(ChecklistReferenceType.ReconAccountGroup, "Xxx123"); 

    var result = this.checklistTaskDefinitionRepository.GetTaskDefinitionsForEdit(ChecklistReferenceType.ReconAccountGroup, "Xxx123"); 

    Assert.AreEqual(1, result.Count); 
    //Assert.AreEqual("Xxx123", result[0].ReferenceKey); 
    //Assert.AreEqual("SomeDescription", result[0].Description); 
} 

我也有一個用來初始化方法:

protected override void Initialize() 
{ 
    this.company = this.CreateCompany("Test company"); 
    this.checklistTaskDefinitionRepository = this.CreateRepository<ChecklistTaskDefinitionRepository>(this.company); 
    this.helper = new ChecklistTaskTestHelper(this.checklistTaskDefinitionRepository, this.checklistTaskStatusRepository); 
} 

而這些在類的開始:

private Company company; 
private ChecklistTaskDefinitionRepository checklistTaskDefinitionRepository; 
private ChecklistTaskStatusRepository checklistTaskStatusRepository; 
private ChecklistTaskTestHelper helper; 

而且我只要一運行的測試方法,我牛逼打印出這一點:

試驗方法Core.Data.Test.Modules.Checklists.ChecklistTaskDefinitionRepositoryTest.GetTaskDefinitionsForEdit_HavingTaskDefinitions_ReturnsChecklistTaskDefinitions拋出異常: System.Data.Entity.Infrastructure.DbUpdateException:更新條目中出現了錯誤。

+0

環境DbContext變量極易出錯。以前做了哪些更改,哪些對象位於ChangeTracker中,這兩種方法做了什麼以及內部異常是什麼? – DevilSuichiro

回答

0

如果您調試測試,您可以檢索內部異常,在這種情況下會給你錯誤的原因(fk錯誤,重複的pk錯誤,列不存在,表不存在,數據庫確實不存在)。

要在visual studio中調試測試,請右鍵單擊測試並單擊調試。

+0

這不是問題的答案,只是一個建議調試。我相信這會作爲評論更好 – DevilSuichiro