2016-03-04 114 views
0
[Test] 
    public void DetailPromocodeStatusWithModel() 
    { 
     var sut = _testContext.Sut; 
     _httpModelFactory.FakeHttpContext(); 
     var mockHttpContext = MockRepository.GenerateMock<HttpContextBase>(); 
     var mockRequest = MockRepository.GenerateMock<HttpRequestBase>(); 
     mockHttpContext.Stub(x => x.Request).Return(mockRequest); 
     mockRequest.Stub(x => x.HttpMethod).Return("POST"); 
     var context = new ControllerContext(mockHttpContext,new RouteData(),sut); 
     sut.ControllerContext = context; 


     var viewResult = sut.Enquire(SampleEnquiryForm()); 

     Debug.Assert(viewResult != null, "view != null"); 
     Assert.NotNull(viewResult); 
    } 

*我正在测试一个具有特定IF语句的类,它需要我的请求是一个POST并且isAjaxRequest是真正的,才能进入特定的块。我已经设置了POST部分,但我似乎无法设置标题使其成为AJAX请求,没有失败。 *单元测试AjaxRequest C#

+0

你可以用if语句块添加代码,并且你试图做到这么远 – Eva

回答

0

对于单元测试,你可以模拟isAjaxRequest()方法进入需要的块。就我个人而言,我使用Typemock Isolator来达到这个目的,因为它允许模拟静态方法。看看:

[TestMethod, Isolated] 
public void TestIsAjaxRequest() 
{ 
    var fake = Isolate.Fake.Instance<HttpRequestBase>(); 

    Isolate.WhenCalled(() => AjaxRequestExtensions.IsAjaxRequest(null)).WillReturn(true); 

    Assert.IsTrue(AjaxRequestExtensions.IsAjaxRequest(fake)); 
} 

希望它会有所帮助。

+0

非常感谢! – Michael