我有一個使用StructureMapNancyBootstrapper的自定義Nancy引導程序,但問題是相同的,無論容器。自定義NancyFx引導程序測試代碼
public class CustomNancyBootstrapper : StructureMapNancyBootstrapper
{
protected override void RequestStartup(IContainer container, IPipelines pipelines, NancyContext context)
{
var auth = container.GetInstance<ICustomAuth>();
auth.Authenticate(context);
}
}
我想編寫一個測試斷言身份驗證被稱爲與上下文...這樣的事情...
[Test]
public void RequestStartup_Calls_CustomAuth_Authenticate_WithContext()
{
// set up
var mockAuthentication = new Mock<ICustomAuth>();
var mockContainer = new Mock<IContainer>();
var mockPipelines = new Mock<IPipelines>();
var context = new NancyContext();
mockContainer.Setup(x => x.GetInstance<ICustomAuth>()).Returns(mockAuthentication.Object);
// exercise
_bootstrapper.RequestStartup(_mockContainer.Object, _mockPipelines.Object, context);
// verify
mockAuthentication.Verify(x => x.Authenticate(context), Times.Once);
}
的問題是,我不能叫RequestStartup,因爲它是按照NancyBootstrapperBase中的定義進行保護。
protected virtual void RequestStartup(TContainer container, IPipelines pipelines, NancyContext context);
是否有一個「正確」 /「官方」南希的方式來做到這一點,而無需創建另一個派生類和暴露方法作爲似乎只是一個黑客?
感謝
感謝您的答覆。我看到了這一點,但覺得這是一個小小的設計,因爲它真的測試了路線,只是間接地測試了引導程序。仍然......我認爲這是最好的前進方向,所以我會標記爲答案。 – alexs
是的,我知道。但他們在GitHub上有一個非常積極的發展,我建議你解決這個問題https://github.com/NancyFx/Nancy/issues –
再次感謝安東, 我提出這個問題,其中也有實際的代碼需要通過以上兩種方法進行測試 https://github.com/NancyFx/Nancy/issues/2126 – alexs