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