2015-09-09 32 views
0

我想學習如何進行單元測試,實際檢查一些代碼,看看是否有問題。我從來沒有使用過單元測試,但看過一些教程來看看如何構建測試類。在asp.net輸入字段的單元測試驗證

我已創建了testboxes,用戶可以在其中輸入他的一個小項目:名字,姓氏,電子郵件,電話,地址我想打一個單元測試來檢查,如果輸入的是有效的(非空)

這甚至可能嗎?

我的代碼:

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> 

ResultController

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() 
    { 

    } 
} 
} 

回答

0

的單元測試的MVC控制器的目標是驗證控制器正常運作。在單元測試的背景下,您從來沒有真正進入視圖或與視圖進行交互。您只需驗證由控制器返回的型號是否正確,在發佈到控制器後模型是否正確更新等。

您想實現的功能稱爲UI test,它嘲笑用戶交互。您無法通過unit test來實現這一目標。

使用單元測試可以實現的是,您可以通過提供發佈到控制器的示例模型以及有效和無效模型狀態的變化來測試後控制器,以驗證僅當ModelState有效時控制器才能正確填充Session等。