asp.net-mvc-2 – 为MVC2 AsyncControllers构建单元测试
发布时间:2020-05-27 14:33:51 所属栏目: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-4 – 为什么ResolveBundleUrl不能用于自定义文
- ASP.NET MVC中的“Generic”OpenID 5
- 服务器端ASP.Net Ajax异常处理
- asp.net-mvc – 保存为“BodyPart_3ded2bfb-40be-4183-b789
- asp.net – 用于分析在azure上运行的网站性能的步骤
- asp.net – VB.NET接口
- asp.net-mvc-3 – 在App_code文件夹中使用razor @helper使用
- asp.net – Helios项目的当前状态是什么?
- asp.net-mvc – ASP.NET MVC本地化最佳实践?
- asp.net-mvc – 使用MiniProfiler与MVC 5
推荐文章
站长推荐
- 为什么MVC而不是好的旧ASP.NET?还没有抓住为什么
- asp.net-mvc – 如何在回发后保持dropdownlist选
- asp.net – 链接按钮属性在新选项卡中打开?
- 使用asp.net中的web api通过http进行身份验证
- asp.net-mvc – 使用FileResult返回压缩文件的AS
- asp.net – 使用GhostScript将PDF转换为服务器上
- asp.net-mvc-3 – ASP.NET MVC 3未找到视图“错误
- asp.net – 评论未使用的代码会不会给我的页面带
- asp.net-mvc – 将隐藏文本字段附加到表单MVC
- 密码由6-12位数字或字母组成,密码哈希加密
热点阅读
