我一直在使用 Ninject 进行依赖注入和控制反转,并且我一直在非常成功地使用 Moq 进行测试;然而,我最近遇到了一个需要开始使用 Ninject 工厂扩展的职位。
我的代码如下:
interface IBarFactory
{
Bar CreateBar();
}
class Bar : IBar
{
...
}
class BarModule
{
public override void Load()
{
Bind<IBarFactory>().ToFactory();
}
}
class Tests
{
[Fact]
public void TestMethod()
{
var bar = new Mock<IBar>();
bar.Setup(b => b.DoSomething())
.Verifiable();
var barFactory = new Mock<IBarFactory>();
cryptoKeyFactoryMock.Setup(f => f.CreateBar())
.Returns(bar.Object)
.Verifiable();
var someOtherClass = new SomeOtherClass(barFactory.Object);
}
}
当试图强制 IBarFactory 模拟返回一个 IBar 模拟对象时,我收到一个错误,因为 CreateBar() 方法需要一个 Bar 类型的对象而不是 IBar 类型的对象。
有没有人在使用 Moq 和 Ninject Factory 时取得了更大的成功?