0

この単体テストでは、電子メールとユーザー名の重複をチェックする必要があります。別の開発者と話すと、入れ子になった try catch で電子メールとユーザー名が重複していないかどうかを確認する必要があると彼は言いました。私が彼を正しく理解したかどうかはわかりませんが、ここに私が持っているものがあります. 他の開発者は現在利用できないため、確認することはできません. この形式は正しくないと思います。何かアドバイス?

        try
        {

            AsaMembershipProvider prov = this.GetMembershipProvider();


            MembershipCreateStatus status;
            MembershipUser user = prov.CreateUser("UserX", "12345", "UserX@abc.com", "", "", true, null, out status);


            user = prov.GetUser("UserX", false);


            var isAuthenticated = prov.ValidateUser(user.UserName, "12345");
            Assert.IsTrue(isAuthenticated);
            Assert.AreEqual(user.UserName, "UserX");
            Assert.AreEqual(user.Email, "userx@abc.com");

            try
            {

                prov.DeleteUser("UserX", true);

                user = prov.GetUser("UserX", false);

                Assert.AreEqual(null, user);
                user = prov.GetUser("UserX", false);


                Assert.AreEqual(status, MembershipCreateStatus.Success);
            }
            catch (Exception ex)
            {
                LogMessage(ex);
                Assert.Fail(ex.Message);
            }


            prov.DeleteUser("UserX", true);

            user = prov.GetUser("UserX", false);

            Assert.AreEqual(null, user);


        }
        catch (Exception ex)
        {
            LogMessage(ex);
            Assert.Fail(ex.Message);
        }

    }
4

1 に答える 1

0

try ブロック内のコードを への呼び出しに移動しますAssert.Throws<T>

Assert.Throws<Exception>(() => {
    // attempt to create a duplicate user.
}, "Exception thrown when creating duplicate user.");

Exception重複が作成されたときにスローされると予想される正確な例外の種類に変更します。

于 2013-05-15T18:48:07.660 に答える