如何在DNX中测试需要DI的自定义中间件?

时间:2016-04-06 08:53:01

标签: asp.net dependency-injection dnx

我正在编写一些自定义中间件以在ASP.NET应用程序中使用。 我的中间件取决于我可以使用方法class PluginModel(CMSPlugin): title = models.CharField(max_length=60) def copy_relations(self, oldinstance): for breakpoint in oldinstance.breakpoints.all(): breakpoint.pk = None breakpoint.plugin_key = self breakpoint.save() 在Microsoft DI容器中注入的一些服务。

然而,当使用xUnit并创建AddServices时,我没有地方可以调用Microsoft DI容器来注入我的中间件所依赖的服务。

有关如何创建TestServer并在其上添加我的中间件的信息,请参阅下面的示例:

TestServer

在哪里以及如何将我的服务注入Microsoft DI容器?

1 个答案:

答案 0 :(得分:0)

似乎可以相对容易地完成:

/// <summary>
///     Create a server with the ASP.NET Core Logging Middleware registered without any configuration.
///     The server will throw an exception of type <typeparamref name="T"/> on every request.
/// </summary>
/// <typeparam name="T">The type of exception to throw.</typeparam>
/// <returns>A <see cref="TestServer"/> that can be used to unit test the middleware.</returns>
private TestServer CreateServerWithAspNetCoreLogging<T>()
    where T : Exception, new()
{
    return TestServer.Create(null, app =>
    {
        app.UseAspNetCoreLogging<string>();

        SetupTestServerToThrowOnEveryRequest<T>(app);
    }, services =>
    {
        services.AddAspNetCoreLogging();
    });
}