我有一个带依赖关系的抽象类,我想进行单元测试:
public abstract class BaseClass
{
public BaseClass(IDependency dep) { ... }
public virtual void TestMethod() { ... }
...
}
我想使用NInject的MockingKernel来测试这个类,所以我鼓掌了以下内容:
using (var k = new MoqMockingKernel())
{
k.Bind<IDependency>().ToMock();
k.Bind<BaseClass>().ToMock();
k.GetMock<BaseClass>().CallBase = true;
var sut = k.Get<BaseClass>();
sut.TestMethod();
k.GetMock<BaseClass>().Verify(...);
}
但我遇到了问题。它正在寻找一个无参数构造函数来创建部分BaseClass模拟,而不是传递模拟的IDependency。
看看the source,看来MockingKernel会在创建时从不将参数传递给模拟器。
有没有办法用MockingKernel创建部分模拟?