3

CRUDの単体テストを作成していますが、Deleteテストメソッドでこの種のエラーが発生します。

System.ArgumentNullException: Value cannot be null.

テストを実行しているときはいつでも、userIDの下のコンテンツはすでに削除されていますが、テスト結果バーに「失敗」ステータスが表示されていることがわかりました。誰かが私の問題を解決するのを手伝ってもらえますか?

Error Message: Test method TestProject1.UserTest.Delete threw exception: 
System.ArgumentNullException: Value cannot be null.
Parameter name: entity

これが私のコードです:

[TestMethod]
public void Delete()
{
taskModelContainer db = new taskModelContainer();

int userID = 7;

TaskMgr.Models.User UserEntity = new TaskMgr.Models.User();

UserEntity.userID = userID;

UserController User = new UserController();

ActionResult result = User.DeleteConfirmed(UserEntity.userID);
int id = Convert.ToInt32(User.ViewBag.id);
User Users = db.Users.Single(e => e.userID == id);


Assert.IsNull(Users.userID);

}

コントローラ:

[HttpPost, ActionName("Delete")]
    public ActionResult DeleteConfirmed(int id)
    {
        User user = db.Users.Find(id);
        db.Users.Remove(user);
        db.SaveChanges();
        var qry = from e in db.Users orderby e.userID descending select e.userID;
        int eID = qry.First();
        ViewBag.id = user.userID;
        return RedirectToAction("Index");
    }

コントローラの次の行で停止します。db.Users.Remove(user);

4

1 に答える 1

0

私はこれを行うことで問題を解決しました:

[TestMethod]
    public void Delete()
    {
        taskModelContainer db = new taskModelContainer();

        int userID = 41;

        TaskMgr.Models.User UserEntity = new TaskMgr.Models.User();

        UserEntity.userID = userID;

        UserController User = new UserController();

        ActionResult result = User.DeleteConfirmed(UserEntity.userID);

        var del = from e in db.Users where e.userID == UserEntity.userID select e;
        var delete = del.Count();

        Assert.AreEqual(0, delete);

    }

クエリを実行し、userIDとその内容が削除されているかどうかを確認しました。コントローラを変更しませんでした。

于 2012-10-09T06:42:09.183 に答える