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