以下是我所拥有的:
public interface IDataCenterMsmqWriter
{
void UpdateData(Action<DataCenterWcfProxy> action);
}
被测系统:
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
}
如何使用Rhino Mocks将_writer设置为Mock进行测试,并希望测试UpdateData方法中是否调用了正确的Action。
我试过这个:
// _writer is setup as a mock
var data = new SomeData();
_wcfServiceSUT.SendData(data);
_writer.AssertWasCalled(d => d.UpdateData(x => x.SendVarData(data));
不起作用。
我可以添加:
,p=>p.在AssertWasCalled中的UpdateData之后忽略Arguments(),但这并不能满足我的要求,以确保使用数据变量调用SendVarData。
我看过这个:
如何断言一个动作被称为
但我的Action并不像他的例子中的mockDialogService那样被嘲笑。
有没有一种方法可以测试Action或Func是否使用正确的输入参数等正确调用?
UpdateData应该是虚拟的,否则rho-mock不能覆盖方法
验证使用正确参数调用Action或Func的最佳方法是使用.WWhenCalled扩展。示例如下谷歌小组讨论。
此示例显示了如何利用预期输出与实际输出,而不是是否满足预期。