Sto cercando di costruire una prova contro un metodo eredità che implementano fuori i parametri. Potresti darmi un esempio su come farlo?Moq Esempio di utilizzo fuori e ref necessaria
risposta
Basta assegnare il parametro out
o ref
dal test.
Dato questa interfaccia:
public interface ILegacy
{
bool Foo(out string bar);
}
È possibile scrivere un test come questo:
[TestMethod]
public void Test13()
{
string bar = "ploeh";
var legacyStub = new Mock<ILegacy>();
legacyStub.Setup(l => l.Foo(out bar))
.Returns(true);
Assert.IsTrue(legacyStub.Object.Foo(out bar));
Assert.AreEqual("ploeh", bar);
}
fantastico. Tutto ciò di cui avevo bisogno. Ho solo qualcosa per farmi andare avanti. Una cosa però voi non ha ancora utilizzare la "It.IsAny" roba EG (Foo (fuori it.IsAny
Un sacco di It.Is * nel QuickStart troppo ... - Mi raccomando la lettura regolare della stessa - è solito essere in grado di digerire in un single pass (e stai facendo qualcosa di sbagliato se ti serve tutto in una singola suite di test!) –
@ devnet247: come mai questo non vale un +1 da te - mostra poco rispetto per il tempo di Mark? (Qualcuno ha dato a Q anche un +1 - presumo sia Mark - Ho un -1 per contrastarlo come nessun compito fatto). + 1ing questa risposta. –
Qualche cosa male con il secondo esempio nella parte superiore di http://code.google.com/p/moq/wiki/QuickStart? Dovresti davvero dare esempi di ciò che stai cercando di fare se non hai intenzione di cercare cose come questa.
Ho agree.I apologise.I davvero non so da dove cominciare su questo come il vero e proprio "codice reale" era un po 'complicato e non poteva inviare it.I dovrebbe avere costruire un esempio Noddy myself.Lesson imparato – user9969
+1 I kinda dimenticato anche il quickstart :) –
Per inciso se si desidera utilizzare moq (attualmente) per simulare il parametro di uscita, è necessario eseguire anche il seguente salto del telaio. Diciamo che volevi prendere in giro un parametro out che restituiva un altro oggetto simulato, ad es.
var mockServiceA = new Mock<IMyService>();
var mockServiceOutput = new Mock<IMyServiceOutput>();
// This will not work...
mockServiceA.Setup(svc => svc.DoSomething(out mockServiceOutput.Object));
// To have this work you have to do the following
IMyServiceOutput castOutput = mockServiceOutput.Object;
mockServiceA.Setup(svc => svc.DoSomething(out castOutput));
È necessario chiarire che cosa si sta facendo e perché non funziona come previsto. Solo "Moq with out parameters" non è abbastanza - per cominciare, perché hai bisogno di Moq? Si prega di mostrare un po 'di codice. –
Abbastanza giusto. Devo inventarmi qualcosa in quanto l'ambiente è complicato. Mi chiedevo solo se ci fosse uno snippet completo da qualche parte. Tutto qui. Metterò insieme qualcosa e lo pubblicherò – user9969