Мне очень тяжело пытаться понять, как я могу делать вызовы .SetupXXX()
лежащего в основе Mock<T>
, которые были сгенерированы внутри MockingKernel
. Любой, кто может пролить свет на то, как он должен работать?
Как сделать установку mocks с Ninject MockingKernel (moq)
Ответ 1
Вам нужно вызвать метод GetMock<T>
в MoqMockingKernel
, который вернет сгенерированный Mock<T>
, на который вы можете вызвать методы .SetupXXX()/VerifyXXX()
.
Вот пример unit test, который демонстрирует использование 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
.