Nunitを使用して、コントローラからDBからレコードを削除するメソッドをテストしています。すべて正常に動作し、チェックするとレコードが削除されます。単位テスト削除、レコードがデータベース内で削除されても返されます
db.AssesorMaxProjectLoad.Find(previousLoad.ID)
は、依然として削除された値を返し、テストに失敗します。
テスト:
[Test]
public void AssesorMaxProjectLoadsDeleteLoad()
{
var previousLoad = db.AssesorMaxProjectLoad.Where(t => t.AssesorID == testAssesor3ID).FirstOrDefault(t => t.TaskGroupID == taskGroupID);
var result = controller.DeleteConfirmed(previousLoad.ID) as ViewResultBase;
var newProjectLoad = db.AssesorMaxProjectLoad.Find(previousLoad.ID).MaxAssignedProjectLoad;
Assert.AreEqual(null, newProjectLoad);
}
コントローラメソッドのテスト:
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
AssesorMaxProjectLoad assesorMaxProjectLoad = db.AssesorMaxProjectLoad.Find(id);
db.AssesorMaxProjectLoad.Remove(assesorMaxProjectLoad);
db.SaveChanges();
return RedirectToAction("Index", "AssesorMaxProjectLoads", new { id = assesorMaxProjectLoad.TaskGroupID });
}
が起こっていただきましたか私が何をしないのですか?私はそれがデータベースになくなったときにどのように返されるのか分かりません。
あなたのテストでdbはどこから来ますか?異なるコンテキストインスタンスとエンティティがキャッシュされている可能性はありますか? –
これは統合テストですか? – Nkosi
はい、それは確かに統合テストです – Spitfire5793