ComponentNotRegisteredException甚至包含已注册的实例

时间:2018-02-15 11:39:07

标签: c# dependency-injection autofac

我有一个接口IMyInterface,我正在为这样的单元测试注册一个Moq对象

var myMockObject = new Mock<IMyInterface>();
myMockObject.Setup(a => a.MyMethod(It.IsAny<string>()))
 .Returns(new MyResult()
{
    Props1 = "Testing123",
  }).Callback(() =>
                {

                });

builder.RegisterInstance(myMockObject).As<IMyInterface>(); 
var test = container.Resolve<IMyInterface>();

但我总是收到以下错误:

  

Autofac.Core.Registration.ComponentNotRegisteredException:&#39; The   要求的服务&#39; IMyInterface&#39;尚未注册。避免   这个例外,要么注册一个组件来提供服务,   使用IsRegistered()检查服务注册,或使用   ResolveOptional()方法来解析可选的依赖关系。&#39;

需要注意的一点是我正在访问静态类中的AutoFac构建器。我已确保autofac构建器实例仅创建一次。

更新看起来我必须在注册实例后调用builder.Build()。我想所有实例和类型都必须注册,之后你会调用Build()。因此,在此之后注册更多实例是不可能的。

1 个答案:

答案 0 :(得分:2)

注册后,您没有构建Autofac容器。

builder.RegisterInstance(myMockObject).As<IMyInterface>();

// Create the DI container
var container = builder.Build();

var test = container.Resolve<IMyInterface>();