C# 南希是谁?

C# 南希是谁?,c#,unit-testing,nancy,C#,Unit Testing,Nancy,我们有一个单元测试项目,我们正在尝试测试我们的模块。在我们的UnitTest项目中,我们还有一个假的api,允许我们测试其他一些东西 现在我们在安装过程中遇到了Nancy的问题。这是我们设置浏览器和测试的方式: Mock<ITokenController> _mockController; _mockController = new Mock<ITokenController>(); _browser = CreateBrowser<TokenModule>(

我们有一个单元测试项目,我们正在尝试测试我们的模块。在我们的UnitTest项目中,我们还有一个假的api,允许我们测试其他一些东西

现在我们在安装过程中遇到了Nancy的问题。这是我们设置浏览器和测试的方式:

Mock<ITokenController> _mockController;
_mockController = new Mock<ITokenController>();
_browser = CreateBrowser<TokenModule>(_mockController);


protected Browser CreateBrowser<TModule>(Mock controllerMock) where TModule : INancyModule
{
    var browser = new Browser(
        configurator =>
        configurator.Module<TModule>()
            .Dependency(controllerMock.Object)
            .ResponseProcessor<JsonProcessor>()
            .RequestStartup((container, pipelines, context) => SetupUser(context)));

    return browser;
}

[TestMethod]
public void Token_Login_GET_OK()
{
    // arrange
    // act
    var response = _browser.Get(MklConstants.TokenEndpoint);

    //assert
    Assert.IsTrue(response.StatusCode == HttpStatusCode.OK);
    _mockController.Verify(controller => controller.GetToken());
}
现在,我们怀疑为什么会发生这种情况,是因为Nancy在尝试解决两次问题时都选择了相同的接口实现,因此我们在第二次解决时遇到了这个问题


如果您能帮助解决此问题,我们将不胜感激。

异常详细信息似乎不包括已添加的具有相同密钥的项目。哪里有两个例外,或者只有一个例外?我是瑞典人,所以:“En post med samma nyckel har redan lagts till.”实际上翻译为:“已经添加了具有相同密钥的项目。”只有一个例外,但有一系列内部例外。我只是在最里面的异常之前添加了最里面的异常和异常头。我的道歉@TOMTEFAR!哪一行抛出该异常?我看不到哪一行,因为它在Nancy中,而且我还没有找到任何pdb文件。在nancys TinyIoc中,堆栈跟踪显示了该方法的发生位置,但仅此而已。我们观察它的方式是在我们自己的IRouteMataProvider实现中。它被调用了2次,因为伪存在,当第二次运行使用GetMetadata()中相同的routeDescription执行时,我们得到了异常.->从上往下看:这使我们相信您在两次运行中从TinyIoc中拾取了相同的对象,但它们不是相同的对象。异常详细信息似乎不包括已添加具有相同键的项目。哪里有两个例外,或者只有一个例外?我是瑞典人,所以:“En post med samma nyckel har redan lagts till.”实际上翻译为:“已经添加了具有相同密钥的项目。”只有一个例外,但有一系列内部例外。我只是在最里面的异常之前添加了最里面的异常和异常头。我的道歉@TOMTEFAR!哪一行抛出该异常?我看不到哪一行,因为它在Nancy中,而且我还没有找到任何pdb文件。在nancys TinyIoc中,堆栈跟踪显示了该方法的发生位置,但仅此而已。我们观察它的方式是在我们自己的IRouteMataProvider实现中。它被调用了2次,因为伪存在,并且当第二次运行使用GetMetadata()中相同的RoutedDescription执行时,我们会得到异常。->请遵循上面的说明:这使我们认为您在两次运行中从TinyIoc拾取了相同的对象,但它们不是相同的对象。
-       InnerException  {"Unable to resolve type: Nancy.Routing.RouteCache"}    System.Exception {Nancy.TinyIoc.TinyIoCResolutionException}

    -       InnerException  {"En post med samma nyckel har redan lagts till."}  System.Exception {System.ArgumentException}
    +       Data    {System.Collections.ListDictionaryInternal} System.Collections.IDictionary {System.Collections.ListDictionaryInternal}
            HResult -2147024809 int
            HelpLink    null    string
    +       InnerException  null    System.Exception
            Message "En post med samma nyckel har redan lagts till."    string
            ParamName   null    string
            Source  "mscorlib"  string
            StackTrace  "   
                vid Nancy.TinyIoc.TinyIoCContainer.ConstructType(Type requestedType, Type implementationType, ConstructorInfo constructor, NamedParameterOverloads parameters, ResolveOptions options)
                vid Nancy.TinyIoc.TinyIoCContainer.ConstructType(Type requestedType, Type implementationType, ConstructorInfo constructor, ResolveOptions options)
                vid Nancy.TinyIoc.TinyIoCContainer.SingletonFactory.GetObject(Type requestedType, TinyIoCContainer container, NamedParameterOverloads parameters, ResolveOptions options)
                vid Nancy.TinyIoc.TinyIoCContainer.ResolveInternal(TypeRegistration registration, NamedParameterOverloads parameters, ResolveOptions options)
                vid Nancy.TinyIoc.TinyIoCContainer.ConstructType(Type requestedType, Type implementationType, ConstructorInfo constructor, NamedParameterOverloads parameters, ResolveOptions options)" string
    +       TargetSite  {Void ThrowArgumentException(System.ExceptionResource)} System.Reflection.MethodBase {System.Reflection.RuntimeMethodInfo}