Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC5的正确单元测试_C#_Unit Testing_Nunit_Asp.net Mvc 5 - Fatal编程技术网

C# ASP.NET MVC5的正确单元测试

C# ASP.NET MVC5的正确单元测试,c#,unit-testing,nunit,asp.net-mvc-5,C#,Unit Testing,Nunit,Asp.net Mvc 5,我有以下代码,但我不知道我为这些方法编写了哪些适当的单元测试,以及如何完成。基本上我想使用NUnit.Framework 提前感谢您提供的任何线索 [AllowAnonymous] public ActionResult ForgotPassword(string id) { var model = new ForgotPasswordViewModel(); if (!string.IsNullOrEmpt

我有以下代码,但我不知道我为这些方法编写了哪些适当的单元测试,以及如何完成。基本上我想使用NUnit.Framework

提前感谢您提供的任何线索

   [AllowAnonymous]
        public ActionResult ForgotPassword(string id)
        {
            var model = new ForgotPasswordViewModel();

            if (!string.IsNullOrEmpty(id))
            {
                #region Process Reset Password Key

                try
                {
                    var forgotPasswordEvent = AppModel.ForgotPasswordEvents.SingleOrDefault(x => x.UIDHash == id);

                    if (forgotPasswordEvent != null)
                    {
                        var stringToHash = string.Format("{0}---{1}---{2}", forgotPasswordEvent.UID.ToString(),
                                    forgotPasswordEvent.UserId.ToString(), forgotPasswordEvent.Created.ToString());

                        var readyHash = SecurityHelper.GetHashString(stringToHash);

                        if (id == readyHash)
                        {
                            var forgotPasswordEventUserId = forgotPasswordEvent.UserId.ToString();
                            var realUser = AppModel.AspNetUsers.SingleOrDefault(x => x.Id == forgotPasswordEventUserId);

                            if (realUser != null)
                            {
                                var resetPasswordViewModel = new ResetPasswordViewModel();
                                resetPasswordViewModel.ResetPasswordData = id;
                                resetPasswordViewModel.UserName = realUser.UserName;

                                return RedirectToAction("ResetPassword", "Account", resetPasswordViewModel); // ResetPassword(resetPasswordViewModel);
                            }

                        }
                    }
                    else
                    {
                        return RedirectToAction("Index", "Home");
                    }
                }
                catch (Exception)
                {
                }

                #endregion
            }

            #region Check if the user is logged in and fill out fileds for him.

            var sessionManager = SessionWrapper.GetFromSession<SessionManager>("_SessionManager");

            if (sessionManager != null)
            {
                var clientId = sessionManager.AppUser.ClientId;

                if (clientId != null)
                {
                    model.Email = sessionManager.AppUser.EmailID;
                    model.UserName = sessionManager.AppUser.UserName;
                    model.IsLoggedInUser = true;
                }
            }

            #endregion

            return View(model);
        }

        [HttpPost]
        [AllowAnonymous]
        public ActionResult ForgotPassword(ForgotPasswordViewModel model, FormCollection formCollection)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    #region Check user input

                    var user = AppModel.AspNetUsers.SingleOrDefault(x => x.UserName == model.UserName);

                    var areErrors = false;

                    if (user == null)
                    {
                        ModelState.AddModelError("UserDoesnotExist", DLMModelEntities.Properties.Resource.UserDoesNotExist);
                        areErrors = true;
                    }

                    if (user.EmailID != model.Email)
                    {
                        ModelState.AddModelError("EmailIsWrong", DLMModelEntities.Properties.Resource.EmailIsWrong);
                        areErrors = true;
                    }

                    if (areErrors)
                        return View(model);

                    #endregion

                    #region Send Email and inform user

                    try
                    {
                        var forgotPasswordEvent = new ForgotPasswordEvent();

                        var resetPasswordEmailUserState = new ResetPasswordEmailUserState();
                        resetPasswordEmailUserState.ForgotPasswordEventId = Guid.NewGuid();
                        resetPasswordEmailUserState.UserId = Guid.Parse(user.Id);
                        resetPasswordEmailUserState.Created = DateTime.Now;

                        forgotPasswordEvent.UID = resetPasswordEmailUserState.ForgotPasswordEventId;
                        forgotPasswordEvent.UserId = resetPasswordEmailUserState.UserId;
                        forgotPasswordEvent.IsSent = false;
                        forgotPasswordEvent.Created = resetPasswordEmailUserState.Created;

                        var stringToHash = string.Format("{0}---{1}---{2}", resetPasswordEmailUserState.ForgotPasswordEventId.ToString(),
                             resetPasswordEmailUserState.UserId.ToString(), resetPasswordEmailUserState.Created.ToString());

                        forgotPasswordEvent.UIDHash = SecurityHelper.GetHashString(stringToHash);

                        AppModel.ForgotPasswordEvents.Add(forgotPasswordEvent);
                        AppModel.SaveChanges();

                        var smtp = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp");

                        // Set the MailerModel properties that will be passed to the MvcMailer object.
                        var m = new MailerModel();
                        m.UserName = user.UserName;
                        m.ResetPasswordLink = string.Format("{0}/{1}", Request.Url.AbsoluteUri, forgotPasswordEvent.UIDHash);
                        m.FromEmail = smtp.From;
                        m.Subject = AppConfiguration.ResetEmailSubject;
                        m.ToEmail = model.Email;                     

                        var client = new SmtpClientWrapper();

                        client.SendCompleted += (sender, e) =>
                        {
                            if (e.Error != null || e.Cancelled)
                            {
                                // Handle Error                                
                            }
                            else
                            {
                                try
                                {
                                    var forgotPasswordEventsToUpdate = AppModel.ForgotPasswordEvents.SingleOrDefault(x => x.UID == resetPasswordEmailUserState.ForgotPasswordEventId);

                                    if (forgotPasswordEventsToUpdate != null)
                                    {
                                        forgotPasswordEventsToUpdate.IsSent = true;
                                        AppModel.SaveChanges();
                                    }
                                }
                                catch (Exception ex)
                                {                                    
                                    ModelState.AddModelError("EmailEx", ex.Message);
                                }
                            }
                        };

                        Mailer.PasswordReset(m).SendAsync(resetPasswordEmailUserState, client);

                        model.IsResetEMailSent = true;
                    }
                    catch (Exception ex)
                    {
                        ModelState.AddModelError("EmailEx", ex.Message);
                    }

                    #endregion
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError("EmailEx", ex.Message);
                }
            }

            return View(model);
        }
[AllowAnonymous]
public ActionResult ForgotPassword(字符串id)
{
var模型=新ForgotPasswordViewModel();
如果(!string.IsNullOrEmpty(id))
{
#区域进程重置密码密钥
尝试
{
var forgotPasswordEvent=AppModel.ForgotPasswordEvents.SingleOrDefault(x=>x.UIDHash==id);
if(forgotPasswordEvent!=null)
{
var stringToHash=string.Format(“{0}-{1}-{2}”,forgotPasswordEvent.UID.ToString(),
forgotPasswordEvent.UserId.ToString(),forgotPasswordEvent.Created.ToString());
var readyHash=SecurityHelper.GetHashString(stringToHash);
if(id==readyHash)
{
var forgotPasswordEventUserId=forgotPasswordEvent.UserId.ToString();
var realUser=AppModel.AspNetUsers.SingleOrDefault(x=>x.Id==forgotPasswordEventUserId);
if(realUser!=null)
{
var resetPasswordViewModel=新的resetPasswordViewModel();
resetPasswordViewModel.ResetPasswordData=id;
resetPasswordViewModel.UserName=realUser.UserName;
返回RedirectToAction(“ResetPassword”、“Account”、resetPasswordViewModel);//ResetPassword(resetPasswordViewModel);
}
}
}
其他的
{
返回重定向到操作(“索引”、“主页”);
}
}
捕获(例外)
{
}
#端区
}
#区域检查用户是否已登录并为其填写文件。
var sessionManager=SessionWrapper.GetFromSession(“_sessionManager”);
if(sessionManager!=null)
{
var clientId=sessionManager.AppUser.clientId;
if(clientId!=null)
{
model.Email=sessionManager.AppUser.EmailID;
model.UserName=sessionManager.AppUser.UserName;
model.IsLoggedInUser=true;
}
}
#端区
返回视图(模型);
}
[HttpPost]
[异名]
公共操作结果ForgotPassword(ForgotPasswordViewModel模型,FormCollection FormCollection)
{
if(ModelState.IsValid)
{
尝试
{
#区域检查用户输入
var user=AppModel.AspNetUsers.SingleOrDefault(x=>x.UserName==model.UserName);
var ARERRORS=错误;
if(user==null)
{
AddModelError(“UserDoesnotExist”,dlmmodelenties.Properties.Resource.UserDoesnotExist);
错误=正确;
}
if(user.EmailID!=model.Email)
{
AddModelError(“EmailIsError”,dlmmodelenties.Properties.Resource.EmailIsError);
错误=正确;
}
如果(错误)
返回视图(模型);
#端区
#区域发送电子邮件并通知用户
尝试
{
var forgotPasswordEvent=新forgotPasswordEvent();
var resetPasswordEmailUserState=新的resetPasswordEmailUserState();
resetPasswordEmailUserState.ForgotPasswordEventId=Guid.NewGuid();
resetPasswordEmailUserState.UserId=Guid.Parse(user.Id);
resetPasswordEmailUserState.Created=DateTime.Now;
forgotPasswordEvent.UID=resetPasswordEmailUserState.ForgotPasswordEventId;
forgotPasswordEvent.UserId=resetPasswordEmailUserState.UserId;
forgotPasswordEvent.IsSent=false;
forgotPasswordEvent.Created=resetPasswordEmailUserState.Created;
var stringToHash=string.Format(“{0}-{1}-{2}”),resetPasswordEmailUserState.ForgotPasswordEventId.ToString(),
resetPasswordEmailUserState.UserId.ToString(),resetPasswordEmailUserState.Created.ToString();
forgotPasswordEvent.UIDHash=SecurityHelper.GetHashString(stringToHash);
AppModel.ForgotPasswordEvents.Add(forgotPasswordEvent);
AppModel.SaveChanges();
var smtp=(SmtpSection)ConfigurationManager.GetSection(“system.net/mailSettings/smtp”);
//设置将传递给MvcMailer对象的MailerModel属性。
var m=新的MailerModel();
m、 用户名=user.UserName;
m、 ResetPasswordLink=string.Format(“{0}/{1}”,Request.Url.AbsoluteUri,forgotPasswordEvent.UIDHash);
m、 FromEmail=smtp.From;
m、 Subject=AppConfiguration.ResetEmailSubject;
m、 ToEmail=model.Email;
var client=new-SmtpClientWrapper();
client.SendCompleted+=(发件人,e)=>
{