0
我一直在使用Ninject进行依赖注入和控制反转,并且我一直使用Moq进行测试非常成功;但是,最近我进入了一个需要开始使用Ninject的工厂扩展的位置。Moin的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()方法需要一个酒吧键入对象而不是IBar类型的对象。
有没有人使用Moq与Ninject Factory更成功?
ninject工厂扩展自动生成一个工厂类超出该界面(因此绑定().ToFactory())。该界面不仅仅用于测试。 –
2012-07-17 01:06:17
@ChrisCovert他的意思是IBar。要么改变工厂返回IBar或模拟酒吧。 – 2012-07-17 06:57:44
我想我试图找到一个解决方案,并不需要我标记虚拟的东西。由于Ninject.Factory的工作原理,我认为我不能让工厂返回IBar,这正是我之前想说的。 – 2012-07-17 12:48:39