2016-03-30 8 views
0

Ich bin sehr neu bei RhinoMocks (erstmals).Rhino Mocks Ref Param Einschränkung

Dies ist meine Methode Erklärung:

void SetXmlValue(ref string path, ref string Value); 

ich, dass für die gegebene Eingabe überprüfen müssen, wenn SetXmlValue genannt wird, ist es mit bestimmten Werten für den Pfad und den Wert

ich habe versucht, aufgerufen wird einige Optionen, einschließlich:

_mockClass.Expect(o => o.SetXmlValue(ref Arg<string>.Ref(Rhino.Mocks.Constraints.Is.Equal(path), "somepath").Dummy ,ref Arg<string>.Ref(Rhino.Mocks.Constraints.Is.Equal(value), "somevalue").Dummy)); 

_mockClass.Expect(o => o.SetXmlValue(ref Arg<string>.Out(path).Dummy, ref Arg<string>.Out(value).Dummy)) 

Allerdings bin ich, dass die SetXmlValue Methode zur Bestätigung nicht in der Lage wurde mit den Parametern aufgerufen ich es erwarte zu nennen.

Irgendwelche Eingaben?

Antwort

0

Dies bestätigt, dass das Verfahren mit den richtigen params aufgerufen wird:

_mockClass.Stub(x => x.SetXmlValue(null, null)) 
        .IgnoreArguments() 
        .WhenCalled(invocation => Assert.AreEqual("somepath", invocation.Arguments[0])); 
        .WhenCalled(invocation => Assert.AreEqual("somevalue", invocation.Arguments[1]));   

_mockClass.VerifyAllExpectations(); 

EDIT nur eine andere Art, dies zu tun gefunden:

_mockClass.GetArgumentsForCallsMadeOn(x => x.SetXmlValue(null, null)); 
Assert.AreEqual("somepath", arguments[0][0]); 
Assert.AreEqual("somevalue", arguments[0][1]); 

Das zweite Beispiel war nützlich, als ich verwendete Gherkin-Szenarien und die Schrittdefinition des Ergebnisses musste die letzte sein (weshalb ich die Erwartungen vorher nicht festlegen konnte).

In diesem Fall enthält arguments [0] die Parameter, wenn SetXmlValue() das erste Mal aufgerufen wurde, Argumente [1] enthält die Parameter, wenn SetXmlValue() das zweite Mal aufgerufen wurde, und so weiter.