使用 NInject 模拟内核模拟返回接口的方法
Mock a method returning an interface with NInject Mocking Kernel
假设我有这样的界面。
public interface ICamProcRepository
{
List<IAitoeRedCell> GetAllAitoeRedCells();
IAitoeRedCell CreateAitoeRedCell();
}
如何模拟 return 接口和接口对象列表的方法。我正在使用 Ninject.MockingKernel.Moq
var mockingKernel = new MoqMockingKernel();
var camProcRepositoryMock = mockingKernel.GetMock<ICamProcRepository>();
camProcRepositoryMock.Setup(e => e.GetAllAitoeRedCells()).Returns(?????WHAT HERE?????);
camProcRepositoryMock.Setup(e => e.CreateAitoeRedCell()).Returns(?????WHAT HERE?????);
在您的情况下,您需要为有问题的模拟接口创建所需结果的模拟,并将它们通过内核或直接最小起订量传递到其设置的 Returns
中。我不知道 Ninject 能否在这方面为您提供帮助,但这是一个简单的 Moq 示例
var mockingKernel = new MoqMockingKernel();
var camProcRepositoryMock = mockingKernel.GetMock<ICamProcRepository>();
var fakeList = new List<IAitoeRedCell>();
//You can either leave the list empty or populate it with mocks.
//for(int i = 0; i < 5; i++) {
// fakeList.Add(Mock.Of<IAitoeRedCell>());
//}
camProcRepositoryMock.Setup(e => e.GetAllAitoeRedCells()).Returns(fakeList);
camProcRepositoryMock.Setup(e => e.CreateAitoeRedCell()).Returns(() => Mock.Of<IAitoeRedCell>());
如果模拟对象也需要提供假功能,那么也必须相应地进行设置。
假设我有这样的界面。
public interface ICamProcRepository
{
List<IAitoeRedCell> GetAllAitoeRedCells();
IAitoeRedCell CreateAitoeRedCell();
}
如何模拟 return 接口和接口对象列表的方法。我正在使用 Ninject.MockingKernel.Moq
var mockingKernel = new MoqMockingKernel();
var camProcRepositoryMock = mockingKernel.GetMock<ICamProcRepository>();
camProcRepositoryMock.Setup(e => e.GetAllAitoeRedCells()).Returns(?????WHAT HERE?????);
camProcRepositoryMock.Setup(e => e.CreateAitoeRedCell()).Returns(?????WHAT HERE?????);
在您的情况下,您需要为有问题的模拟接口创建所需结果的模拟,并将它们通过内核或直接最小起订量传递到其设置的 Returns
中。我不知道 Ninject 能否在这方面为您提供帮助,但这是一个简单的 Moq 示例
var mockingKernel = new MoqMockingKernel();
var camProcRepositoryMock = mockingKernel.GetMock<ICamProcRepository>();
var fakeList = new List<IAitoeRedCell>();
//You can either leave the list empty or populate it with mocks.
//for(int i = 0; i < 5; i++) {
// fakeList.Add(Mock.Of<IAitoeRedCell>());
//}
camProcRepositoryMock.Setup(e => e.GetAllAitoeRedCells()).Returns(fakeList);
camProcRepositoryMock.Setup(e => e.CreateAitoeRedCell()).Returns(() => Mock.Of<IAitoeRedCell>());
如果模拟对象也需要提供假功能,那么也必须相应地进行设置。