2009-08-11 4 views

Répondre

13

Voici la réponse simple

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

Alors, voici un exemple d'utilisation Moq:

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

Bonus réponse:

Je trouve que certaines personnes sont en fait juste à la recherche pour créer une instance singleton d'une classe particulière, plutôt que de créer réellement eux-mêmes (cela permet à l'objet d'être créé quand quelque chose le demande, plutôt que lorsque vous construisez votre conteneur). Cela se fait comme ceci:

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

Dans votre cas, puisque vous avez dit le mot « faux », je suppose que vous voudriez la première plutôt que la deuxième réponse, mais il est une bonne chose à savoir.

+0

en utilisant Moq ... var mock = new Mock (); Liaison () .ToConstant (mock); ConstantProvider créerait une instance de Mock , ce qui est compatible avec le service demandé – Ryu

+0

vous devez passer MyMock.Object, pas la maquette elle-même :) –

+0

Je vais mettre à jour l'exemple ci-dessus avec le code dont vous avez besoin –

2

Vous ne savez pas quel type d'outil de simulation, le cas échéant, ou la version de Ninject que vous utilisez; cependant, il vaut la peine de mentionner que Ninject 2 a une extension qui fournit une intégration avec Moq - http://github.com/enkari/ninject.moq.

Je réalise que cela ne répond pas directement à votre question, Anderson's le fait bien, mais je pensais que cela pourrait être pertinent de toute façon.

+0

de Nice! Ce pourrait être vraiment ce qu'il cherche. –

+0

Ouais, ça a l'air bien - je ne l'ai pas encore utilisé moi-même, mais je cherche à le faire bientôt. –