【发布时间】:2012-02-24 17:21:08
【问题描述】:
这是我所拥有的:
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.IgnoreArguments() 在 AssertWasCalled 中的 UpdateData 之后,但这并没有给我我想要的,以确保使用数据变量调用 SendVarData。
我看过这个:
How to assert that an action was called
但在他的示例中,我的 Action 并没有像 mockDialogService 那样被模拟。
有没有办法测试是否使用正确的输入参数等正确调用了 Action 或 Func?
【问题讨论】:
-
DataCenterWcfProxy.SendVarData()是虚拟方法,还是可以放置一个接口? -
不,它只是接口上的一个公共方法,将通过 WCF 序列化。
-
这是一个添加接口
IDataCenterWcfProxy的选项,该接口由DataCenterWcfProxy实现并由Update的Update方法使用IDataCenterMsmqWriter?
标签: c# unit-testing rhino-mocks