2009-08-11 34 views

回答

13

下面是簡單的答案

Bind<IMyType>().ToConstant<MyType>(new MyType()); 

所以這裏的用起訂量的例子:

var mock = new Mock<IMyType>(); 
//Setup your mock expectations/etc here. 
//... 
Bind<IMyType>().ToConstant(mock.Object); 

獎金答案:

我發現有些人實際上只是尋找創建特定類的單例實例,而不是實際創建它本身(這允許在需要的時候創建對象,而不是在構建容器時)。這是這樣完成的:

Bind<IMyType>.To<MyType>().Using<SingletonBehavior>(); 

在你的情況,因爲你說的話「模擬」,我會假設你想要第一而不是第二個答案,但它是要知道一件好事。

+0

使用Moq ... var mock = new Mock (); 綁定().ToConstant(mock); ConstantProvider將創建模擬的實例,這是不符合你需要MyMock.Object傳遞所請求的服務 – Ryu 2009-08-13 07:03:47

+0

兼容,而不是模仿本身:) – 2009-08-13 15:47:50

+0

我會更新上面的代碼示例,你需要 – 2009-08-13 16:48:07

2

不確定你使用的是哪種模擬工具,如果有的話,或者Ninject的版本;然而,值得一提的是Ninject 2有一個擴展,它提供了與Moq的集成 - http://github.com/enkari/ninject.moq

我意識到這並不直接回答你的問題,Anderson's做得很好,但認爲它可能是相關的無論如何。

+0

不錯!這可能是他正在尋找的。 – 2009-08-14 17:20:17

+0

是啊,看起來不錯 - 自己還沒有用過它,但是很快就會這麼做。 – 2009-08-14 21:11:56

相關問題