Sto provando ad allenarmi se si tratta di qualcosa che sto facendo male, o è un problema in moq o NUnit. Sto chiamando un soap endpoint e il mio riferimento al servizio sta generando sia i metodi sync che async. La chiamata che sto facendo, sembra qualcosa di simile:Callback asincrono Moq non funziona con più parametri
public async Task DoThisAsync(idnameobject myobj, int id)
{
await ws.DoSomethingAsync(myobj, id);
}
Sto installando il mio moq di restituire il callback, quindi posso interegate i parametri che ho chiamato il servizio web con. La mia prova sembra qualcosa di simile:
var callback = new idnameobject();
wsMock
.SetUp(w => w.DoSomethingAsync(It.IsAny<idnameobject>(), It.IsAny<int>())
.Callback<idnameobject, int>((obj, id) => callback = obj);
await myservice.DoThisAsync(myobj, id);
Assert.That(callback.Id, Is.EqualTo(myobj.Id));
A questo punto, ottengo un'eccezione riferimento null quando si chiama il mio metodo, che non contiene alcuna informazione nella traccia dello stack. Tutto quello che ho è Exception thrown: 'System.AggregateException' in mscorlib.dll
nell'output.
Il bit che è strano, è che non fallisce se imposto il callback dal metodo sincrono e cambio il mio metodo per chiamarlo.
Non guasta anche se chiamo un metodo asincrono che ha solo un parametro.
Se qualcuno ha qualche idea, per favore fatemi sapere come non voglio cambiare il mio metodo a causa dei nostri test, ma idealmente voglio che il mio test garantisca che sto chiamando correttamente il servizio web.
Grande spiegazione e risolto il mio problema. Vorrei poterlo contrassegnare come la risposta per te. – mikesigs
Mi dispiace, questo ha risposto alla mia domanda, solo un po 'lento per contrassegnarlo come tale – Tom