Aquí lo que tengo:IgnoreArguments burla de Rhino() y los análisis a las lambda fue llamado es correcta
public interface IDataCenterMsmqWriter
{
void UpdateData(Action<DataCenterWcfProxy> action);
}
sistema bajo prueba:
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
}
¿Cómo se prueba con la configuración burla de Rhino el _writer como un simulacro y quiere probar que se llamó a la acción correcta en el método UpdateData.
He intentado esto:
// _writer is setup as a mock
var data = new SomeData();
_wcfServiceSUT.SendData(data);
_writer.AssertWasCalled(d => d.UpdateData(x => x.SendVarData(data));
no funciona.
puedo añadir el:
, p => p.IgnoreArguments() después del UpdateData dentro del AssertWasCalled, pero eso no me da lo que quiero, para asegurarse de SendVarData fue llamado con la variable de datos.
He mirado en esto:
How to assert that an action was called
pero mi acción no puede ser burlado como mockDialogService en su ejemplo.
¿Hay alguna manera de comprobar si una Acción o Func se llamó correctamente con los parámetros de entrada correctos, etc.?
¿Es 'DataCenterWcfProxy.SendVarData()' un método virtual, o podría poner una interfaz en su lugar? – Jeroen
no es solo un método público en la interfaz que se serializará sobre WCF. –
Es una opción para agregar una interfaz 'IDataCenterWcfProxy' implementada por' DataCenterWcfProxy' y utilizada por el método 'Update' de' IDataCenterMsmqWriter'? – Jeroen