我有一个接口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()
。因此,在此之后注册更多实例是不可能的。
答案 0 :(得分:2)
注册后,您没有构建Autofac
容器。
builder.RegisterInstance(myMockObject).As<IMyInterface>();
// Create the DI container
var container = builder.Build();
var test = container.Resolve<IMyInterface>();