asp.net-mvc-2 – 为MVC2 AsyncControllers构建单元测试
发布时间:2020-12-15 20:02:18 所属栏目:asp.Net 来源:网络整理
导读:我正在考虑重新将一些我的MVC控制器重写为异步控制器.我有这些控制器的工作单元测试,但我正在尝试了解如何在异步控制器环境中维护它们. 例如,目前我有这样的动作: public ContentResult Transaction(){ do stuff... return Content("result");} 我的单元测
我正在考虑重新将一些我的MVC控制器重写为异步控制器.我有这些控制器的工作单元测试,但我正在尝试了解如何在异步控制器环境中维护它们.
例如,目前我有这样的动作: public ContentResult Transaction() { do stuff... return Content("result"); } 我的单元测试基本上看起来像: var result = controller.Transaction(); Assert.AreEqual("result",result.Content); 好的,这很容易 但是当你的控制器变化如下所示: public void TransactionAsync() { do stuff... AsyncManager.Parameters["result"] = "result"; } public ContentResult TransactionCompleted(string result) { return Content(result); } 你怎么想你的单元测试应该建立?您当然可以在测试方法中调用异步启动器方法,但如何获取返回值? 我在Google上没有看到任何内容 感谢任何想法 解决方法
与任何异步代码一样,单元测试需要注意线程信令. .NET包含一个名为AutoResetEvent的类型,可以阻止测试线程,直到异步操作完成:
public class MyAsyncController : Controller { public void TransactionAsync() { AsyncManager.Parameters["result"] = "result"; } public ContentResult TransactionCompleted(string result) { return Content(result); } } [TestFixture] public class MyAsyncControllerTests { #region Fields private AutoResetEvent trigger; private MyAsyncController controller; #endregion #region Tests [Test] public void TestTransactionAsync() { controller = new MyAsyncController(); trigger = new AutoResetEvent(false); // When the async manager has finished processing an async operation,trigger our AutoResetEvent to proceed. controller.AsyncManager.Finished += (sender,ev) => trigger.Set(); controller.TransactionAsync(); trigger.WaitOne() // Continue with asserts } #endregion } 希望有帮助:) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – asp.net mvc – 子文件夹
- asp.net-mvc – ASP.NET标识:在Azure网站上使用GeneratePa
- asp.net-mvc – MVC查看可空的日期字段格式
- 我可能正在开发一个ASP.NET应用程序. Java / PHP开发人员在
- asp.net – 将字符串传递到MVC4中的部分视图
- asp.net-mvc – 从页面到局部视图的asp.net mvc参数
- 使用ASP.Net MVC将图像上传到SQL Server 2005?
- asp.net – ApplicationInsight导致网站在启动时挂起
- asp.net – 是否有商业部署并使用基于.NET CAS(代码访问安全
- ASP.Net中的Amazon CloudFront失效
推荐文章
站长推荐
- asp.net-mvc – asp.net mvc:如何模拟Url.Conte
- 如何在ASP.NET应用程序中记录错误(异常)?
- 【.Net码农】认识ASP.NET MVC的5种Authorization
- asp.net – IE在IIS7中打开脚本,打开静态压缩
- asp.net-mvc – ASP.NET MVC – 复杂模型验证
- ASP.NET Core中的缓存[1]:如何在一个ASP.NET Co
- 具有任意数量的键值对的ASP.NET路由 – 是否可能
- asp.net – 在IHTTPHandler中以编程方式创建Syst
- asp.net – 图片上传 – 本地主机中断
- asp.net – 在SDL Tridion 2011中将JSON文件上传
热点阅读