C# 将Moq模拟对象注册为Unity容器的类型
因为我的sut类有一个构造函数,它的参数是C# 将Moq模拟对象注册为Unity容器的类型,c#,unit-testing,unity-container,moq,C#,Unit Testing,Unity Container,Moq,因为我的sut类有一个构造函数,它的参数是IUnityContainer,所以我想在我的单元测试中设置一个新的Unity容器,并将其传递给sut。 我喜欢在这里使用Moq,因为我还必须对某些方法调用进行仔细检查。 我在这里试过的是 public interface IFoo { void Bar(); } class Program { static void Main(string[] args) {
IUnityContainer
,所以我想在我的单元测试中设置一个新的Unity容器,并将其传递给sut。
我喜欢在这里使用Moq,因为我还必须对某些方法调用进行仔细检查。
我在这里试过的是
public interface IFoo
{
void Bar();
}
class Program
{
static void Main(string[] args)
{
var fooMock = new Mock<IFoo>();
fooMock.Setup(x => x.Bar()).Callback(() => Console.WriteLine("Hello"));
IUnityContainer container = new UnityContainer();
container.RegisterType(typeof (IFoo), fooMock.Object.GetType());
var sut = container.Resolve<IFoo>();
sut.Bar();
Console.Read();
}
}
公共接口IFoo
{
空心钢筋();
}
班级计划
{
静态void Main(字符串[]参数)
{
var fooMock=new Mock();
fooMock.Setup(x=>x.Bar()).Callback(()=>Console.WriteLine(“Hello”));
IUnityContainer容器=新的UnityContainer();
RegisterType(typeof(IFoo),fooMock.Object.GetType());
var sut=container.Resolve();
sut.Bar();
Console.Read();
}
}
但这会导致出现resultionfailedexception
。
你知道我能做什么,或者有什么办法可以解决这个问题吗?你已经有了一个对象IFoo
fooMock
的实例,所以你需要使用以下方法注册:
container.RegisterInstance(fooMock.Object);
container.RegisterInstance<IFoo>(fooMock.Object);