Ninject.Web.Mvc 使内存测试失败:System.InvalidOperationException:序列不包含元素

问题描述

这对我来说很奇怪,因此我在这里创建了一个概念证明:https://github.com/osotorrio/WebApiNinjectTests

该应用程序是一个 Web API,在内存中进行了一些简单的测试。您可以在 constructor of the TestFixture file here 中找到测试服务器配置。

这就是问题。如果您并行运行所有测试,则只有一个测试会成功,其余的将失败并显示以下错误消息。

System.Reflection.TargetInvocationException :调用的目标已抛出异常。 system.invalidOperationException : 序列不包含任何元素

一个奇怪的行为。如果你一个一个地运行测试,所有的测试都会成功。

第二个奇怪的行为。在 NinjectWebCommon (line 69) 中,如果我注释掉过滤器绑定,例如:

        private static void RegisterServices(IKernel kernel)
        {
            kernel.Bind<IAmSomeServiceService>().To<SomeServiceService>();

            // This is adding the Ninject.Web.Mvc.dll to the test project and this is making the tests to fail
            // kernel.BindFilter<AdminOnlyFilter>(FilterScope.Controller,0).WhenControllerHas<AdminOnlyAttribute>();
        }

注释掉这一行,所有测试都成功并行运行。我看到的唯一不同之处是取消注释该行会将 Ninject.Web.Mvc DLL 添加到测试项目中,从而导致测试失败。

知道出了什么问题吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)