I’m in the middle of writing a blog post series on Nancy.Testing and this bit me a bit (sorry, couldn’t resist myself).
I have written a lot about how to test web-responses and all the great stuff that comes with it, but totally forgot about view. I assumed that it “just worked”. And it does but… well read on. It’s really simple.
Keeping the story short - let’s cut to the code: There’s some really important settings to make here. If you don’t you’ll end up with an (as always in Nancy btw) excellent error message, something like this:
Nancy.ViewEngines.ViewNotFoundException:
> Unable to locate view 'FariyTaleFigure'
Currently available view engine extensions: sshtml,html,htm,cshtml,vbhtml
>
> Locations inspected:
> views/SimpleDataModuleWithView/FariyTaleFigure-sv-SE,views/SimpleDataModuleWithView/FariyTaleFigure,SimpleDataModuleWithView/FariyTaleFigure-sv-SE,SimpleDataModuleWithView/FariyTaleFigure,views/FariyTaleFigure-sv-SE,views/FariyTaleFigure,FariyTaleFigure-sv-SE,FariyTaleFigure
> Root path: C:\Dev\DiscoveringNancyThroughTests\DiscoverNancy.Tests\NancyAndSimpleData.Tests\bin\Debug
Oh yeah - the two settings you need to do:
- First install the Razor (or the view engine of choice) NuGet package: Install-Package Nancy.Viewengines.Razor
- Then set the “Copy to output directory” property to “Copy if newer”. You’ll reach that setting by hitting F4 on the Razor file, the
.cshtml
.
After that it’ll “just work”.
You can read more about the awesome testing capabilities of Nancy here. My code can be found here.