首页 / C# / c# – 确认中间件正在使用中
c# – 确认中间件正在使用中
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 确认中间件正在使用中,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1493字,纯文字阅读大概需要3分钟。
内容图文
我试图通过单元测试确认中间件实际上正在添加到管道中.我有以下静态方法添加中间件.这就是我正在测试的.
public static class HandleDbUpdateExceptionExtensions
{
public static IApplicationBuilder UseDbUpdateExceptionHandler(this IApplicationBuilder builder)
{
return builder.UseMiddleware<DbUpdateExceptionHandler>();
}
}
我知道它确实有效,因为中间件在我的网站上运行.但是,我想编写一个单元测试,以确保它始终包含在未来的版本中.但是,我的单元测试失败了:
[Fact(DisplayName = "Exception handler is added to IApplicationBuilder")]
public void DbUpdateExceptionHandler_Added_To_IApplicationBuilder()
{
var builder = new Mock<IApplicationBuilder>().Object;
builder.UseDbUpdateExceptionHandler();
Assert.NotNull(builder.ApplicationServices);
//var test = builder.ApplicationServices.GetService(typeof(DbUpdateExceptionHandler));
}
builder.ApplicationServices为null,因此测试当前失败.我认为它失败了,因为我只是在嘲笑IApplicationBuilder,但是在网上关于单元测试.Net Core中间件的存在的相关材料很少.
任何帮助是极大的赞赏!
解决方法:
UseMiddleware实际上是一种扩展方法,它将创建一个在内部使用中间件的RequestDelegate.该委托做了很多事情,所以你很难测试它是否会正确注册你的实际中间件类型.
您唯一能做的就是检查是否使用某个请求委托调用了基础ApplicationBuilder.Use method.
或者,您也可以通过构建应用程序管道并执行它来实际调用中间件.但这需要您正确设置依赖注入(因为UseMiddleware()的委托将使用它)并且所有中间件的依赖项都已正确设置.
所以这将是非常复杂的.我建议你写一个integration test而不是检查一个请求,你的中间件将被正确调用,并可以做它应该做的事情.
内容总结
以上是互联网集市为您收集整理的c# – 确认中间件正在使用中全部内容,希望文章能够帮你解决c# – 确认中间件正在使用中所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。