2016-03-04 121 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