0
在VS 2015測試模型是有效
這裏上的Web應用程序的工作,MVC 5我的模型:
public class InfoFormulaireEmployeModele
{
[Required(ErrorMessage =" *You must provide a date")]
[RegularExpression("^[0-9]{8}$", ErrorMessage ="The date must be of the format AAAAMMJJ")]
public string dateEvenementInitial { get; set; }
}
當我嘗試輸入一些無效的輸入,讓我們說「12AB」,它工作正常,我回到頁面上的錯誤消息。
這是我的觀點:
@using PortailLibreService.Models
@model InfoFormulaireEmployeModele
@{
ViewBag.Title = "ChampsFormulaireInvalidite";
}
@using (Html.BeginForm())
{
<div class="editor-field">
<b>Initial event </b><br>
<p>When did the initial event occured?</p>
@Html.TextBoxFor(x => x.dateEvenementInitial, new { @placeholder = "AAAAMMJJ" }) @Html.ValidationMessageFor(x => x.dateEvenementInitial, null, new { @class = "error" })
</div>
<input type="submit" name="Save" value="Submit" />
}
我想創建一個單元測試,以確保我的模型不會是有效與無效日期條目。
這裏是我的單元測試:
[TestMethod]
public void testRetourPossibleInvalide()
{
InfoFormulaireEmployeModele modelDuplicat = new InfoFormulaireEmployeModele();
modelDuplicat.dateEvenementInitial = "abc";
InvFormController controlleur = lib.getController("100237");
var result = controlleur.ChampsFormulaireInvalidite(modelDuplicat);
Assert.AreEqual(false, controlleur.ModelState.IsValid);
}
出於某種原因,測試失敗,controlleur.ModelState.IsValid是真實的,而應該是假的。如果我只用數值測試它就沒問題。例如,該測試通過:
[TestMethod]
public void testRetourPossibleInvalide()
{
InfoFormulaireEmployeModele modelDuplicat = new InfoFormulaireEmployeModele();
modelDuplicat.dateRetourPossible = "129";
InvFormController controlleur = lib.getController("100237");
var result = controlleur.ChampsFormulaireInvalidite(modelDuplicat);
Assert.AreEqual(false, controlleur.ModelState.IsValid);
}
controlleur.ModelState.IsValid是假運行測試,同時,使測試通過。
我試圖把一個斷點我控制器的方法內,但在調試時我不能達到它..
在檢查modelstate.isvalid狀態之前,您必須針對您的模型調用controlleur.valid。 –
有沒有這樣的事情controlleur.valid –
如果它的日期,那麼爲什麼在世界上你使用'字符串'而不是'DateTime' –