Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将Moq模拟对象注册为Unity容器的类型_C#_Unit Testing_Unity Container_Moq - Fatal编程技术网

C# 将Moq模拟对象注册为Unity容器的类型

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) {

因为我的sut类有一个构造函数,它的参数是
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);