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' –