如何为使用IOwinContext扩展方法的代码编写单元测试

时间:2018-06-05 15:48:02

标签: nunit identityserver3

IdentityServer3有很多扩展方法,很高兴。当尝试对具有某些IOwinContext扩展方法调用的代码进行单元测试时会出现问题:GetIdentityServerHost(),GetIdentityServerBasePath()等来自此class

即使在模拟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

有没有人能解决这个问题,或者你只是为这些课程编写测试? - 这是子弹!我知道跳过测试是不好的,但我快要放弃尝试了。

0 个答案:

没有答案