Ecco quello che ho:IgnoreArguments Rhino prende in giro() e il test se un lambda è stato chiamato correttamente
public interface IDataCenterMsmqWriter
{
void UpdateData(Action<DataCenterWcfProxy> action);
}
sistema in prova:
public class WcfService : IWcfService
{
private readonly IDataCenterMsmqWriter _writer;
public WcfService(IDataCenterMsmqWriter writer)
{
_writer = writer;
}
#region IWcfService members
public void SendData(SomeData data)
{
_writer.UpdateData(d => d.SendVarData(data));
}
// other members of IWcfService elided
#endregion
}
Come faccio a testare con l'impostazione Rhino Mocks la _writer come un Mock e vuoi testare che sia stata chiamata l'azione corretta nel metodo UpdateData.
Ho provato questo:
// _writer is setup as a mock
var data = new SomeData();
_wcfServiceSUT.SendData(data);
_writer.AssertWasCalled(d => d.UpdateData(x => x.SendVarData(data));
non funziona.
posso aggiungere il:
, p => p.IgnoreArguments() dopo l'UpdateData all'interno del AssertWasCalled, ma che non mi dà quello che voglio, per assicurarsi che SendVarData è stata chiamata con la variabile di dati.
Ho guardato questo:
How to assert that an action was called
ma la mia azione non si può beffare come mockDialogService nel suo esempio.
C'è un modo per verificare se un'azione o Func sono stati chiamati correttamente con i parametri di input corretti, ecc.?
'DataCenterWcfProxy.SendVarData()' è un metodo virtuale o è possibile inserire un'interfaccia? – Jeroen
no, è solo un metodo pubblico sull'interfaccia che verrà serializzato su WCF. –
È un'opzione per aggiungere un'interfaccia 'IDataCenterWcfProxy' che viene implementata da' DataCenterWcfProxy' e utilizzata dal metodo 'Update' di' IDataCenterMsmqWriter'? – Jeroen