mit*_*daa 26 asp.net-mvc unit-testing mstest
即使我已经编码了很长时间,我对单元测试也很陌生.我想把它作为我发展方式的一部分.我遇到了关于如何对集合进行单元测试的问题.我通常有我的jQuery脚本调用ASP.Net Server方法来获取数据和填充表格等.他们看着像是
Get_*Noun*()
Run Code Online (Sandbox Code Playgroud)
通常返回一个JsonResult.关于使用MSTest进行单元测试的测试方法和方法的任何想法?
Dav*_*tka 52
您应该能够像其他任何东西一样测试它,前提是您可以从JsonResult中提取值.这是一个帮助你的帮手:
private T GetValueFromJsonResult<T>(JsonResult jsonResult, string propertyName)
{
var property =
jsonResult.Data.GetType().GetProperties()
.Where(p => string.Compare(p.Name, propertyName) == 0)
.FirstOrDefault();
if (null == property)
throw new ArgumentException("propertyName not found", "propertyName");
return (T)property.GetValue(jsonResult.Data, null);
}
Run Code Online (Sandbox Code Playgroud)
然后像往常一样调用控制器,并使用该帮助程序测试结果.
var jsonResult = yourController.YourAction(params);
bool testValue = GetValueFromJsonResult<bool>(jsonResult, "PropertyName");
Assert.IsFalse(testValue);
Run Code Online (Sandbox Code Playgroud)
Jaf*_*fin 20
(我使用的是NUnit语法,但MSUnit不应该太远)
您可以像这样测试您的JsonResult:
var json = Get_JsonResult()
dynamic data = json.Data;
Assert.AreEqual("value", data.MyValue)
Run Code Online (Sandbox Code Playgroud)
然后在包含要测试的代码的项目中,编辑AssemblyInfo.cs文件以允许测试程序集访问匿名类型:
[assembly: InternalsVisibleTo("Tests")]
Run Code Online (Sandbox Code Playgroud)
这样动态就可以确定从json.Data值返回的匿名对象的类型;
| 归档时间: |
|
| 查看次数: |
14612 次 |
| 最近记录: |