Skip to content

Instantly share code, notes, and snippets.

@marekstachura
Created April 23, 2015 22:23
Show Gist options
  • Save marekstachura/7d5589e7e18d31ca7466 to your computer and use it in GitHub Desktop.
Save marekstachura/7d5589e7e18d31ca7466 to your computer and use it in GitHub Desktop.
Nancy self host with dependency
using System;
using Nancy;
using Nancy.Hosting.Self;
using Nancy.TinyIoc;
using NUnit.Framework;
using RestSharp;
namespace NancyApp
{
public class Bootstraper : DefaultNancyBootstrapper
{
protected override void ConfigureApplicationContainer(TinyIoCContainer container)
{
base.ConfigureApplicationContainer(container);
container.Register<IDateProvider>((c,p) => new DateProvider(container.Resolve<ISomeOtherDependency>()));
}
}
public interface IDateProvider
{
DateTime Now();
}
public interface ISomeOtherDependency
{
DateTime DateTime
{
get;
}
}
public class SomeOtherDependency : ISomeOtherDependency
{
public DateTime DateTime { get { return DateTime.Now; }}
}
public class DateProvider : IDateProvider
{
private ISomeOtherDependency _dependency;
public DateProvider(ISomeOtherDependency dependency)
{
_dependency = dependency;
}
public DateTime Now()
{
return _dependency.DateTime.Date;
}
}
public class IndexModule : NancyModule
{
public IndexModule(IDateProvider dateProvider)
{
Get["/"] = _ => string.Format("[{0}] Hello World!", dateProvider.Now());
}
}
[TestFixture()]
public class NancyTest
{
private NancyHost _server;
[SetUp]
public void SetUp()
{
_server = new NancyHost(new Uri("http://localhost:8282"));
_server.Start();
}
[TearDown]
public void TearDown()
{
_server.Stop();
}
[Test()]
public void TestCase()
{
var client = new RestClient("http://localhost:8282");
var request = new RestRequest("/");
var response = client.Execute(request);
var content = response.Content;
Assert.That(response.Content, Is.StringContaining("Hello World!"));
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment