我很难找到如何对.SetupXXX()
内生成的基础Mock<T>
进行MockingKernel
调用。谁可以阐明它应该如何运作呢?
答案 0 :(得分:15)
您需要在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
属性访问生成的MoqMockingKernel.MockRepository
(如果您更喜欢使用SetupXXX方法)。