In order to use Ivonna, you don't need a Web server nor a browser. The Asp.Net engine is hosted by the testrunner process. That means no browser windows, no http overhead, no external . Great for testing on a build server.

Unfortunately, it means that we cannot test the client-side functionality.. yet.


Since we are in the same process, there's no "black box" anymore. Rather than dealing with the server output, we can investigate the internal objects. When testing a WebForms page, we get a reference to a System.Web.UI.Page instance and can check the various controls' properties. When working on an MVC application, we've got the MVCHandler instance. We can also investigate other internal objects using the WebResponse object, or by setting up various CThru aspects. Some built-in aspects allow you to trace the SQL sent to the database, or verify that an email has been sent.

You're in control

Typically you want to run integration tests with the system being as close to the production state as possible. However, sometimes you need to modify it in a predictable way. For example, you don't want emails being actually sent (although you need to verify that they are being sent), payments made, or files uploaded. Ivonna lets you stub any method with a single line.

Another possibility is plugging a piece of test code into some stage of the request processing. When working with the WebForms event model, sometimes you need to verify the state of the system during various execution phases, like Init, Load, or Prerender. Ivonna lets you add a page event handler even before the request starts.

Testing "live" objects

While the Http**Base and Http**Wrapper classes can calm the developers with respect to mocking the Http dependencies, they don't make your desing any better, and the tests are quite ugly and fragile. Ivonna lets you test a piece of code in isolation from other code, yet using a real HttpContext.

Latest news

Latest blog posts

Powered by FeedBurner