2009-08-11 59 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