Ich habe eine Methode für eine Schnittstelle, die so aussieht, und ich will es mit Rhino Mocks Stub:Rhino Mocks: Kann ich Stub() verwenden, wenn einer meiner Parameter Ausdruck <Func<T1, T2>> ist?
TValue GetPropertyOfExistingObject<TValue>(long id, Expression<Func<T, TValue>> propertyExpression);
Mein Code, der das Anstoßen wie folgt aussieht tut:
var service = MockRepository.GenerateStub<IQuoteService>();
service.Stub(s => s.GetPropertyOfExistingObject(1, q => q.QuoteNumber)).Return(1234);
Beachten Sie, dass ein der Parameter in dieser Methode ist ein Expression<Func<T1, T2>>
, und dieser Stub gibt den angegebenen Wert nicht zurück. Ich weiß, dass ich das mit WhenCalled() tun kann, aber ich habe mich gefragt, ob Stub() mit Ausdrucksparametern arbeiten sollte oder ob ich gerade etwas falsch mache.
Dies funktioniert derzeit nur für Methoden im Ausdruck, nicht für Eigenschaften. Sie müssten dem Expression Matcher eine passende Eigenschaft hinzufügen. Wenn die Methode Argumente enthält, müssen Sie diese ebenfalls vergleichen. – Tim
Wichtiger Punkt! Immer noch fair - funktionierte gut für Methoden. – Jan