簡體   English   中英

將Moq模擬對象注冊為Unity容器的類型

[英]Register a Moq mock object as type for a Unity container

由於我的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();
        }
    }

但這會導致ResulutionFailedException 任何想法我能做什么或可能替代這個問題?

您已經有一個對象IFoo fooMock的實例,因此您需要使用RegisterInstance方法進行注冊

container.RegisterInstance<IFoo>(fooMock.Object);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM