Note that there are some explanatory texts on larger screens.

plurals
  1. POMVC 3 Unit Test - Get Actual Response Data
    primarykey
    data
    text
    <p>All,</p> <p>I'm developing and unit testing an interactive voice application using ASP.NET MVC 3 whose controllers return Views containing VoiceXML. I'd like to create unit tests that capture the actual VoiceXML output so I can schema-validate it.</p> <p>My reading and testing have taken me to Scott H's FakeHttpContext that uses Moq, as well as several responses here. Everything compiles correctly, and I'm trying to do something like the following:</p> <pre><code>[TestMethod] public void WelcomeTest1() { EmergencyController controller = new EmergencyController(); controller.ControllerContext = new ControllerContext(MvcMockHelpers.FakeHttpContext("~/Emergency/Welcome"), new RouteData(), controller); ViewResult result = (controller.Welcome()) as ViewResult; . . Assert.IsTrue(controller.ControllerContext.HttpContext.Response.OutputStream.Length &gt; 0); // assert schema validation on the output here } </code></pre> <p>However, stepping through this, I can see that the Welcome view being called, but I'm looking for something in the Response.Output and not finding anything. The mock is set up as follows, in hope that setting CallBase to true would actually write something out. I found some code that I added to the FakeHttpContext constructor that supposedly invokes a StringWriter, but to no avail:</p> <pre><code>public static HttpContextBase FakeHttpContext() { var context = new Mock&lt;HttpContextBase&gt;(); var request = new Mock&lt;HttpRequestBase&gt;() { CallBase = true }; var response = new Mock&lt;HttpResponseBase&gt;(); var session = new Mock&lt;HttpSessionStateBase&gt;(); var server = new Mock&lt;HttpServerUtilityBase&gt;(); context.Setup(ctx =&gt; ctx.Request).Returns(request.Object); context.Setup(ctx =&gt; ctx.Response).Returns(response.Object); context.Setup(ctx =&gt; ctx.Session).Returns(session.Object); context.Setup(ctx =&gt; ctx.Server).Returns(server.Object); response.Setup(r =&gt; r.OutputStream).Returns(new MemoryStream()); response.Setup(r =&gt; r.Headers).Returns(new NameValueCollection()); var writer = new StringWriter(); var wr = new SimpleWorkerRequest("", "", "", "", writer); HttpContext.Current = new HttpContext(wr); return context.Object; } </code></pre> <p>I'm sure I'm missing something obvious, but I'm stumped right now. </p> <p>Thanks</p> <p>Jim Stanley</p> <p>Blackboard Connect</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload