11

我很难弄清楚如何.SetupXXX()调用. 任何人都可以阐明它应该如何工作?Mock<T>MockingKernel

4

1 回答 1

16

您需要调用其GetMock<T>上的方法,该方法MoqMockingKernel将返回生成Mock<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 回答