nunit - 如何为使用 IOwinContext 扩展方法的代码编写单元测试
问题描述
IdentityServer3 有很多扩展方法,很不错。当尝试对具有某些 IOwinContext 扩展方法调用的代码进行单元测试时会出现问题,例如此类中的 GetIdentityServerHost()、GetIdentityServerBasePath()等。
即使在模拟 HttpContext 并能够获取 OwinContext 实例之后,我仍然会收到错误,因为因为一切都是模拟的,所以内部依赖项(例如基于 Autofac)没有解决。
下面是一个单元测试错误:
System.ArgumentNullException : Value cannot be null.
Parameter name: context
at Autofac.ResolutionExtensions.ResolveOptionalService(IComponentContext context, Service service, IEnumerable'1 parameters) in c:\ballen\github\identity\IdSrv3\IdentityServer3\source\Core\Internal\AntiXssLibrary\UnicodeCharacterEncoder.cs:line 0
at IdentityServer3.Core.Extensions.InternalOwinExtensions.ResolveDependency(IOwinContext context, Type type) in c:\ballen\github\identity\IdSrv3\IdentityServer3\source\Core\Extensions\InternalOwinExtensions.cs:line 78
at IdentityServer3.Core.Extensions.InternalOwinExtensions.ResolveDependency[T](IOwinContext context) in c:\ballen\github\identity\IdSrv3\IdentityServer3\source\Core\Extensions\InternalOwinExtensions.cs:line 70
at IdentityServer3.Core.Extensions.OwinEnvironmentExtensions.GetIdentityServerIssuerUri(IDictionary'2 env) in c:\ballen\github\identity\IdSrv3\IdentityServer3\source\Core\Extensions\OwinEnvironmentExtensions.cs:line 672
有没有人解决这个问题,或者您只是跳过此类课程的写作测试?- 子弹来了!我知道跳过测试不好,但我正处于放弃尝试的边缘。
解决方案
推荐阅读
- python - Pandas loc 错误:“系列”对象是可变的,因此它们不能被散列
- r - R中的非线性摆:获得角度的精确时间演化的问题
- node.js - 无法在 Visual Studio 代码中安装 discord.js
- python - 形状未对齐:Scipy 的 fmin_tnc 函数
- wordpress - 将自定义帖子类型显示到静态页面
- performance - 如何改进有两种情况的haskell代码?
- r - ggplot2 为值和日期/日期时间指定辅助轴
- radio-button - 如何在不改变其外观的情况下禁用面板上的 TRAdioButtons?
- python - 构建一个发送到不和谐的推特监视器
- spring-boot - Maven Sure-Fire - StartupReportConfiguration 的 ClassNotFoundException