2016-11-05 1 views
0

Я следующий asp.net страницу Contact и имеющий TestHandlerDemoClass, который, имеющий один метод, который я хочу написать блок тестовый пример для этого метода, но когда я попытался его с помощью MSTest project он бросает исключение, как Request not available in this contextКак высмеять запрос на страницу ASP.Net WebForm?

public partial class Contact : Page 
    { 

    } 
public class TestHandlerDemoClass 
    { 
public void MyTestMethod(Page mypage) 
     { 
     string id= mypage.Request["EntityId"] 

//here I'm not getting Request inside mypage 

Мои код Test Project -

[TestClass] 
    public class UnitTest1 
    { 
     [TestMethod] 
     public void NullCheck() 
     { 
      try 
      { 
       Contact contactPage = new Contact(); 
       TestHandlerDemoClass mydemo = new TestHandlerDemoClass(); 
       mydemo.MyTestMethod(contactPage); 
      } 
      catch (Exception ex) 
      { 
       Assert.AreEqual(ex.Message, "Id not found"); 
      } 
     } 
    } 

здесь выше ех я получил сообщение, как {"Request is not available in this context"}

Я просто пытаюсь написать юнит тестов для метода `

public void MyTestMethod(Page mypage) 

который принимает Page mypage в качестве параметра.

как это сделать?

ответ

1

По насмешливой своему Contact классу тест будет проходить, проблема большинства инструменты модульного тестирования не позволяют издеваться над не виртуальным классом. im, используя Typemock, где его можно издеваться над любым типом объекта без изменения вашего кода и его реальной возможности использовать.

, например:

[TestMethod] 
     public void NullCheck() 
     { 
      try 
      { 
       var contactPage = Isolate.Fake.Instance<Contact>(); 
       TestHandlerDemoClass t = new TestHandlerDemoClass(); 
       t.MyTestMethod(contactPage); 
      } 
      catch (Exception ex) 
      { 
       Assert.AreEqual(ex.Message, "Id not found"); 
      } 
     } 
+0

как и где будет присваиваться значение запроса 'EntityId'? – Neo

0

Я не эксперт в области модульного тестирования, но я думаю, вы должны пройти фиктивный объект нравится отвечает здесь: How to mock the Request on Controller in ASP.Net MVC?

+0

Я получил вашу точку спасибо, но вместо того, чтобы дразнить его было бы более проще, если бы я знать, как передать запрос страницы из модульного тестирования метода – Neo

+0

[HttpRequest объект] (HTTPS : //msdn.microsoft.com/it-it/library/system.web.httprequest (v = vs.110) .aspx) - это что-то довольно сложное, это сборка, начиная с того, что отправлено клиентом, способным отправлять http запрос (часто, браузер). Я сомневаюсь, что вы можете найти что-то более простое, чем макет –

+0

, как издеваться над asp.net вместо контроллера, так как мой метод имеет страницу как входную? – Neo

Смежные вопросы