2016-11-05 2 views
0

Ich habe folgende asp.net Seite Contact und mit TestHandlerDemoClass, die eine Methode, die ich für diese Methode eine Einheit Testfall schreiben möchte, ist mit, aber wenn ich es MSTest project es wirft wie Request not available in this contextWie verspottet man die ASP.Net-WebForm-Seite?

Ausnahme versucht mit
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 

Meine Testprojekt Code -

[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"); 
      } 
     } 
    } 

hier oben ex bekam ich Nachricht wie {"Request is not available in this context"}

Ich versuche gerade Einheit Testfälle für die Methode `

public void MyTestMethod(Page mypage) 

die Page mypage als Parameter nimmt zu schreiben.

wie geht das?

Antwort

1

Durch Ihre Contact Klasse spöttischen der Test bestanden, ist das Problem die meisten Die Unit-Test-Tools erlauben nicht, eine Nicht-virtuelle Klasse zu verspotten. Im Verwenden von Typemock, wo es möglich ist, fast jede Art von Objekt zu verspotten, ohne Ihren Code zu ändern, und es wirklich zu verwenden.

zum Beispiel:

[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

Wie und wo wird es einen Anfragewert 'EntityId' zuweisen? – Neo

0

ich kein Experte in Unit-Tests bin, aber ich denke, Sie sollten ein Objekt mock passieren gerne hier beantwortet: How to mock the Request on Controller in ASP.Net MVC?

+0

bekam ich Ihren Punkt dank sondern es zu verspotten wäre einfacher, wenn ich kennen gelernt habe, wie man eine Seite Anfrage von Unit-Test-Methode zu übergeben – Neo

+0

Ein [Httprequest-Objekt] (https : //msdn.microsoft.com/it-it/library/system.web.httprequest (v = vs.110) .aspx) ist etwas ziemlich kompliziert, das ist Build, ausgehend von dem, was von einem Client geschickt wird, der http senden kann Anfrage (oft ein Browser). Ich bezweifle, dass Sie etwas einfacher als ein Schein finden können –

+0

wie für ASP.net anstelle von Controller zu verspotten, wie meine Methode Seite als Eingabe hat? – Neo

Verwandte Themen