我应该在ASP MVC项目中测试属性吗?

卡斯特·特洛伊

我手上有一个非常常见的场景,涉及两种同名的操作方法-一种用于处理POST请求,另一种用于处理GET请求:

public ActionResult Add()
{
    return View();
}

[HttpPost]
public ActionResult Add(Question question)
{
    repository.Add(question);
    return RedirectToAction("Index");
}

如您所见,操作方法是通过属性来区分的。如果删除该HttpPost属性,则运行时将崩溃并显示黄屏。

我的问题是:编写使用反射的单元测试是否明智,以验证此特定方法是否已用HttpPost属性装饰我倾向于这样做,因为如果有人不小心删除了该属性,则服务器将崩溃。

beautifulcoder

您的post方法在C#中已经具有不同的签名,因此您至少要测试它是否存在。我认为这是由测试人员决定的,但不是绝对必要的。GET并且POST请求是Web固有的。

如果您决定这样做,则可以执行以下操作

var postMethod = typeof(NameOfController).GetMethods().FirstOrDefault(p => p.GetCustomAttribute<HttpPost>(false) != null && p.Name == "Add");
Assert.IsTrue(postMethod != null);

它可能不会逐字记录,但这就是要点。确保添加System.Reflection使扩展方法起作用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我应该在ASP.NET MVC项目中的何处放置共享的HTML生成代码?

我应该在我的MVC项目中包含Modernizr吗

我应该在ASP.NET-MVC 5项目中的哪个位置存储WebAPI控制器?

Visual Studio MVC 5 Web项目-我应该在项目中包含“ node_modules”文件夹吗?

我应该在哪里管理asp.net mvc Windows身份验证角色

我应该在Django模型中测试方法吗?

我应该在ActionFilter中测试AdalException吗?

我应该在我的新闻应用程序项目中使用rss feed吗?

我应该在我的反应项目中导入像按钮这样的组件吗

我应该在 Kotlin 的界面中使用属性吗?

我应该在DDD域项目中进行验证吗?

我们应该在多层项目中映射枚举吗?

我应该在WebApi项目中使用Bootstrapper类吗?

我应该在go项目中使用git子模块吗?

我应该在Bootstrap项目中使用normalize.css吗?

我应该在项目中的每个文件中添加__future__语句吗?

我应该在Laravel项目中的各个视图中放置CSS样式吗?

我应该在Spring MVC项目中的何处放置bean定义?

我应该在ASP.NET MVC项目的package.json中使用devDependencies还是依赖项?

在以下情况下,我应该在ASP.net MVC中使用4条单独的路由吗?

我应该在ASP .Net Core Web应用程序中提交我的wwwroot / lib文件夹吗

我应该在这里测试什么?

我应该在样式组件中测试什么?

我应该在PlayN项目的哪里放置资产?

我应该在 Flutter 中使用什么项目结构?

我应该在virtualenv中pip install python吗?

我应该在DimGeography桌上设置BK / NK吗?

我应该在备份中包含/ dev吗?

我应该在try / except之后使用final吗?