2009-07-01 11 views
7

Ho un oggetto in prova che effettua una chiamata piuttosto complicata a un oggetto di accesso ai dati. Sembra qualcosa di simileAssertWasCalled in rhino mocks

object.DoSomething(somestring,someObject,someOtherObject,someOtherOtherObject)

Nella mia struttura di prova Ho una versione deriso di oggetto e voglio verificare che DoSomething stato chiamato con somestring == "valore1" e someObject.porpertyA == "valore2".

Non riesco a utilizzare il semplice overload AssertWasCalled() perché non so (o mi interessa) diOtherObject. Ho notato un altro sovraccarico che richiede un'azione per i vincoli di installazione, ma non l'ho mai visto usato.

risposta

18

Parte della torta:

yourstub.AssertWasCalled(
      x => x.DoSomething(
       Arg<string>.Is.Equal("value1"), 
       Arg<someObjectType>.Is.Equal(value2), 
       Arg<someOtherObjectType>.Is.Anything, <======== NOTE THIS! 
       Arg<someOtherOtherObjectType>.Is.Equal(value3) 
      ) 
); 
+4

Thaat opere greaat. L'unica altra cosa che ho trovato utile era usare Arg .Matches (y => y.property == qualunque); per verificare i valori sugli oggetti argomento. – captncraig

+0

Sì, lo so, semplicemente non ho mostrato, per semplicità. Godere! – zvolkov

4

Dai uno sguardo allo documentation for constraints.

ho il sospetto che si desidera:

Expect.Call(object.DoSomething(null, null, null, null) 
     .IgnoreArguments() // Ignore those nulls 
     .Constraints(Is.Equal("value1"), 
        Property.Value("PropertyA", "value2"), 
        Is.Anything(), 
        Is.Anything()) 
     .Return(whateverItShouldReturn); 
Problemi correlati