簡體   English   中英

ASP.NET中輸入字段的單元測試驗證

[英]Unit test validation of inputfields in asp.net

我正在嘗試學習如何進行實際檢查某些代碼的單元測試,以查看是否存在問題。 我以前從未使用過單元測試,但是已經看過一些教程來了解如何構建測試類。

我創建了一個帶有測試框的小項目,用戶可以在其中輸入他的名字名字,姓氏,電子郵件,電話,地址我要進行單元測試,以檢查輸入的內容是否有效(非空)

這有可能嗎?

我的代碼:

public class HomeController : Controller
{
    [HttpGet]
    public ActionResult Index()
    {
        UserModel um = new UserModel();

        return View(um);
    }

    [HttpPost]
    public ActionResult Index(UserModel um)
    {
        if (ModelState.IsValid)
        {
            Session["SelectedValues"] = um;
            return RedirectToAction("Index", "Result", new { model = um });
        }
        return View(um);
    }

}

索引視圖(HomeController)

<div class="col-sm-12">

@using (Html.BeginForm())
{

<div class="row">
    <div class="col-sm-6">
        @Html.Label("First name:")<br />
        @Html.TextBoxFor(m => m.FirstName, new { @class = "textbox" })

        <br />

        @Html.Label("Last name:")<br />
        @Html.TextBoxFor(m => m.LastName, new { @class = "textbox" })

    </div>

    <div class="col-sm-6">

        @Html.Label("Email:")<br />
        @Html.TextBoxFor(m => m.Email, new { @class = "textbox" })

        <br />

        @Html.Label("Phone number:")<br />
        @Html.TextBoxFor(m => m.PhoneNumber, new { @class = "textbox" })

    </div>
</div>
<div class="row">
    <div class="col-sm-10">
        @Html.Label("Address:")<br />
        @Html.TextBoxFor(m => m.Address, new { @class = "textbox"})
    </div>

    <div class="col-sm-2">
        @Html.Label("Address number:")<br />
        @Html.TextBoxFor(m => m.AddressNr, new { @class = "textbox" })
    </div>

</div>

<br />

<div class="row">
    <div class="col-sm-12">
        <button class="button" type="submit">Submit</button>
    </div>
</div>
}
</div>

結果控制器

public class ResultController : Controller
{
    // GET: Result
    public ActionResult Index()
    {
       UserModel um = Session["SelectedValues"] as UserModel;
        return View(um);
    }
}

索引視圖(ResultController)

<div>
<h4>UserModel</h4>
<hr />
<dl class="dl-horizontal">
    <dt>
        @Html.DisplayNameFor(model => model.FirstName)
    </dt>

    <dd>
        @Html.DisplayFor(model => model.FirstName)
    </dd>

    <dt>
        @Html.DisplayNameFor(model => model.LastName)
    </dt>

    <dd>
        @Html.DisplayFor(model => model.LastName)
    </dd>

    <dt>
        @Html.DisplayNameFor(model => model.PhoneNumber)
    </dt>

    <dd>
        @Html.DisplayFor(model => model.PhoneNumber)
    </dd>

    <dt>
        @Html.DisplayNameFor(model => model.Email)
    </dt>

    <dd>
        @Html.DisplayFor(model => model.Email)
    </dd>

    <dt>
        @Html.DisplayNameFor(model => model.Address)
    </dt>

    <dd>
        @Html.DisplayFor(model => model.Address)
    </dd>

    <dt>
        @Html.DisplayNameFor(model => model.AddressNr)
    </dt>

    <dd>
        @Html.DisplayFor(model => model.AddressNr)
    </dd>

</dl>
</div>

我想在添加驗證之前創建測試,也可以看到實際的單元測試..可以解釋或幫助我做什么嗎?

我的考試課

namespace UnitTestApplication.Tests
{
[TestClass]
public class ValidationOfInputFieldTest
{

    [TestMethod]
    public void TestIfInputFieldsAreValidated()
    {

    }
}
}

MVC控制器的單元測試的目的是驗證控制器的行為是否正確。 在單元測試的上下文中,您實際上不會進入視圖或與視圖交互。 您只需驗證控制器返回的模型是否正確,發布到控制器后模型是否正確更新等即可。

您想要實現的目標稱為UI test ,它可以模擬用戶交互。 您不能通過unit test來實現。

單元測試可以實現的是,您可以通過向發布到控制器的樣本模型提供有效和無效模型狀態的變化來測試后控制器,以僅在ModelState有效時驗證控制器正確地填充Session等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM