Oto co mam:Rhino kpi IgnoreArguments() i testowanie jeśli lambda nazwano poprawnie
public interface IDataCenterMsmqWriter
{
void UpdateData(Action<DataCenterWcfProxy> action);
}
testowanego systemu:
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
}
Jak przetestować z Rhino Mocks ustawiania _writer jako a Mock i chce przetestować, czy poprawna akcja została wywołana w metodzie UpdateData.
Próbowałem to:
// _writer is setup as a mock
var data = new SomeData();
_wcfServiceSUT.SendData(data);
_writer.AssertWasCalled(d => d.UpdateData(x => x.SendVarData(data));
nie działa.
mogę dodać:
, p => p.IgnoreArguments() po UpdateData wewnątrz AssertWasCalled, ale to nie daje mi to, co chcę, aby upewnić się, SendVarData nazwano ze zmienną danych.
szukałem na to:
How to assert that an action was called
ale moje działania nie jest wyśmiewany jak mockDialogService w swoim przykładzie.
Czy istnieje sposób na sprawdzenie, czy Action lub Func został poprawnie wywołany z odpowiednimi parametrami wejściowymi, itp?
Czy 'DataCenterWcfProxy.SendVarData()' jest metodą wirtualną, czy można umieścić interfejs w miejscu? – Jeroen
nie jest to tylko publiczna metoda interfejsu, która będzie serializować w stosunku do WCF. –
Jest to opcja dodania interfejsu 'IDataCenterWcfProxy', który jest implementowany przez' DataCenterWcfProxy' i używany przez 'Update' metody' IDataCenterMsmqWriter'? – Jeroen