2009-01-29 5 views
16

Nous utilisons Rhino Mocks pour effectuer des tests unitaires et devons mocker deux interfaces. Une seule interface est implémentée sur l'objet et l'autre est implémentée dynamiquement en utilisant une approche orientée aspect. Existe-t-il un moyen facile de combiner dynamiquement les deux interfaces afin de créer une simulation et de gérer les méthodes pour les deux interfaces?Comment combiner deux interfaces lors de la création de mocks?

Répondre

3

Une maquette avec plusieurs interfaces à l'aide de Rhino Mocks peut être généré comme ceci:

var mocker = new MockRepository(); 
var mock = mocker.CreateMultiMock<IPrimaryInterface>(typeof(IFoo), typeof(IBar)); 
mocker.ReplayAll(); 
+2

Notez que 'ReplayAll' est un [obsolète style Rhino Mocks] (http://stackoverflow.com/questions/6078061/what-is-replayall-and-verifyall-in-rhinomocks) – Default

11

Ce n'est pas dynamique, mais certainement simple: créer une interface au sein de votre ensemble de tests qui ne fait rien d'autre que la mise en œuvre des deux autres interfaces:

internal interface ICombined : IFirstInterface, ISecondInterface {} 

se moquer ensuite ICombined.

14

Utiliser Rhino Mocks

var mock = MockRepository.GenerateMock<IFirst, ISecond>(); 
mock.Stub(m => m.FirstProperty).PropertyBehavior(); 
((ISecond)mock).Stub(k=> k.SecondProperty).PropertyBehavior(); 

trouvé et utilisé les informations de http://www.richard-banks.org/2010/08/mocking-comparison-part-11-multiple.html

+3

si autre trébucher sur t son, notez que c'est Générer ** Mock ** et pas "GenerateStub". La version de stub n'a pas plusieurs arguments de type. – Default