2017-01-19 4 views
0

Je tente de terminer une méthode en utilisant une contrainte de type sur l'un des arguments. Normalement, je connais déjà le type et écrire:Comment puis-je faire correspondre un argument basé sur son type de classe de base dans des simulacres de rhinocéros?

o.Stub(x => x.SomeMethod(Arg<bool>.Is.Anything)).Return(...); 

Au lieu de cela, je voudrais attraper tous les appels à SomeMethod où le premier arg passé en dérive d'une classe de base, par exemple B. Est-ce possible? Quelqu'un peut-il aider avec un exemple?

Code

Pseudo pour ce que je voudrais préciser:

o.Stub(x => x.SomeMethod(Arg.Type.Equals(typeof(B))).Return(...); 

et ont cette demande de capture comme SomeMethod(a);a est de type A et A dérive de B.

Répondre

0

Compte tenu de votre exemple.

o.Stub(x => x.SomeMethod(Arg<B>.Is.Anything)).Return(...); 

... devraient travailler pour toutes les classes dérivées de B.

1

Rhino Mocks prend en charge que dans le cadre de son constraints, votre code devrait être quelque chose comme:

o.Stub(x => x.SomeMethod(Arg<B>.Is.TypeOf)).Return(...);