我试图让这个用例为我工作:
我有一个存储库类:ABCRepository
它有一个虚拟方法GetMyValues()
一个模型类:ABCModel
,有一个方法ABCToTest()
。在这里面ABCToTest()
,我正在尝试ABCRepository
使用Ninject访问:
var repo = kernel.Get<ABCRepository>();
//further using repository method
var results = repo.GetMyValues();
现在,我正在使用以下代码为 ABCToTest() 创建 Unittest 并模拟 GetMyValues() 方法:
var kernel = new MoqMockingKernel();
kernel.Bind<ABCRepository>().ToMock();
kernel.Bind<ABCModel>().ToMock();
var abcRepo= kernel.GetMock<ABCRepository>();
abcRepo.Setup(repo => repo.GetMyValues()).Returns("ABC");
//This is a static method I am using to initialize the kernel object, ABCToTest() method is using.
MvcApplication.InitializeInjection(kernel);
var model= kernel.GetMock<ABCModel>().Object;
model.ABCToTest("177737");
当我尝试调试/运行测试时,我可以看到,GetMyValues()
里面的方法调用ABCTotTest
不是返回“ABC”而是返回NULL
。
我对这个实现有什么问题?任何建议和指示都非常感谢..
感谢和问候