11

内で生成さ.SetupXXX()れた基になる呼び出しをどのように実行できるかを理解するのに非常に苦労しています。それがどのように機能することになっているのかを明らかにすることができる人はいますか?Mock<T>MockingKernel

4

1 に答える 1

16

メソッドを呼び出すことができる生成されたものを返すGetMock<T>メソッドを呼び出す必要があります。MoqMockingKernelMock<T>.SetupXXX()/VerifyXXX()

使用法を示す単体テストの例を次に示しGetMock<T>ます。

[Test]
public void Test()
{
    var mockingKernel = new MoqMockingKernel();
    var serviceMock = mockingKernel.GetMock<IService>();
    serviceMock.Setup(m => m.GetGreetings()).Returns("World");
    var sut = mockingKernel.Get<MyClass>();
    Assert.AreEqual("Hello World", sut.SayHello());    
}

関連するタイプは次のとおりです。

public interface IService { string GetGreetings(); }

public class MyClass
{
    private readonly IService service;

    public MyClass(IService service) { this.service = service; }

    public string SayHello()
    {
        return string.Format("Hello {0}", service.GetGreetings());
    }
}

プロパティを使用して、生成されたものにアクセスできることに注意してくださいMoq.MockRepository(SetupXXXメソッドよりも優先する場合)MoqMockingKernel.MockRepository

于 2012-11-03T21:10:14.300 に答える