当前位置 > 首页 > Asp.net

Writing Unit Tests for an ASP.NET MVC Action Method that handles Ajax Request and Normal Request

2012-12-9 16:13:00来源:Asp.net

In this blog post, I will demonstrate how to write unit tests for an ASP.NET MVC action method, which handles both Ajax request and normal HTTP Request. I will write a unit test for specifying the behavior of an Ajax request and will write another unit test for specifying the behavior of a normal HTTP request. Both Ajax request and normal request will be handled by a single action method. So the ASP.NET MVC action method will be execute HTTP Request object’s IsAjaxRequest method for identifying whether it is an Ajax request or not. So we have to create mock object for Request object and also have to make as a Ajax request from the unit test for verifying the behavior of an Ajax request. I have used NUnit and Moq for writing unit tests.

Let me write a unit test for a Ajax request

Code Snippet
  1. [Test]
  2. public void Index_AjaxRequest_Returns_Partial_With_Expense_List()
  3. {
  4. ????// Arrange??
  5. ????Mock<HttpRequestBase> request = new Mock<HttpRequestBase>();
  6. ????Mock<HttpResponseBase> response = new Mock<HttpResponseBase>();
  7. ????Mock<HttpContextBase> context = new Mock<HttpContextBase>();
  8.  
  9. ????context.Setup(c => c.Request).Returns(request.Object);
  10. ????context.Setup(c => c.Response).Returns(response.Object);
  11. ????//Add XMLHttpRequest request header
  12. ????request.Setup(req => req["X-Requested-With"]).
  13. ????????Returns("XMLHttpRequest");
  14.  
  15. ????IEnumerable<Expense> fakeExpenses = GetMockExpenses();
  16. ????expenseRepository.Setup(x => x.GetMany(It.
  17. ????????IsAny<Expression<Func<Expense, bool>>>())).
  18. ????????Returns(fakeExpenses);
  19. ????ExpenseController controller = new

  • 我对N层架构的理解

    2009-8-16 23:52:00

    摘要: 以前没太多关注各多层架构的设计,一直以来都是用的三层架构做网站,最近对N层架构有些兴趣,就稍微研究了一下,由于自己也没怎么用过,也是才学习,中间可能有些错误,请大家指正。ASP.NET的框架

  • Objective-C --- 2,从Hello,World!开始

    2009-3-28 2:33:00

    摘要: 2,从Hello,World!开始现在笔者假设大家已经有了开发的环境。好了,我们开始构筑我们的第一个程序。在开始第一个程序之前,笔者需要提醒大家一下,如果手里面有开发环境的话并且是第一次亲密

  • 代码习惯

    2009-9-15 18:22:00

    摘要: 前天在AgileChina2009上听了Fred George的演讲,他说他以前拿自己的代码给KentBeck看,结果Kent说这代码很垃圾,你去看看我写的Smalltalk best pr

  • SequenceViz is going Pro

    2009-2-2 3:05:00

    This is one of the things on my mind for quite some time. As with most other software developers,

  • iBATIS In Action:什么是iBATIS(2)

    2007-9-2 19:59:00

    摘要: 本文翻译了《iBATIS In Action》一书第二章的后半部分。 内容如下: 2.5 iBATIS快速上手 2.6 未来:iBATIS将去向何处 2.7 总结 阅读全文

  • WinForm界面开发之“HTML内容编辑控件”

    2009-7-7 14:44:00

    做过了很多Winform的共享软件,对界面的设计有了一定的经验和积累,准备开一个“WinForm界面开发”系列文章,介绍下相关的Winform界面设计和相关控件的使用,促进相

  • Oracle 游标 + PL/SQL块(BEGIN END) 真的很好用...

    2009-5-21 17:15:00

    最近实习一直在做数据移植,鼓弄了一段时间的Oracle SQL,发现游标和PL/SQL结合那是好用的不得了,真的! 下面是一小段例子和大家分享一下: DECLARE CURSOR

  • WINFORM中绑定对象支持排序功能

    2009-3-21 20:08:00

    摘要: 在很久很久以前,DataSet操作是.Net中的一个重要使用手段,其实现在也是。在很久很久以前,我的项目操作方式是通过数据Fill一个DataSet,之后返回给业务层做处理,之后给页面去显

  • C#中用鼠标移动页面功能的实现

    2009-6-1 22:29:00

    项目中需要实现以下功能: 打印预览控件中,可以用鼠标拖动页面,以查看超出显示范围之外的部分内容。 该功能本来可以通过拉动水平和垂直滚动条来实现,但实际使用中,用户更趋向于直接用鼠标拖动页面来

  • 使用“WPS表格”导出Excel文档

    2007-3-20 17:29:00

    摘要: 阅读全文 scdsun 2007-03-20 15:59 发表评论