【发布时间】:2011-07-13 20:22:07
【问题描述】:
我有一个带有方法的数据服务接口:
void GetDataByLocationId(Guid locationId, Action<InvokeOperation<IEnumerable<DataValue>>> callback);
我想测试一个依赖于这个数据服务接口的类,并且想模拟出上面的方法。
我将我的模拟设置为:
_mocks = new MockRepository();
var dataLoadOperation = _mocks.StrictMock<InvokeOperation<IEnumerable<DataValue>>>();
Action<InvokeOperation<IEnumerable<DataValue>>> dataValueCallback = null;
然后在我的测试执行中:
var locationId = Guid.NewGuid();
var values = // something //
using (_mocks.Unordered())
{
Expect.Call(() => _dataService.GetDataByLocationId(Arg<Guid>.Is.Equal(locationId), Arg<Action<InvokeOperation<IEnumerable<DataValue>>>>.Is.Anything));
LastCall.Callback(new Func<Action<InvokeOperation<IEnumerable<DataValue>>>, bool>(c => { dataValueCallback = c; return true; }));
dataLoadOperation .Stub(x => x.HasError).Return(false);
dataLoadOperation .Stub(x => x.Value).Return(values);
}
但它永远不会执行......结果证明:
System.ServiceModel.DomainServices.Client.InvokeOperation
是一个密封类,Rhino Mocks在运行时会抛出异常
无法创建密封类的模拟
我正在寻找有关改进我的设计以支持此测试用例的建议;并且仍在使用模拟。
【问题讨论】:
标签: c# silverlight unit-testing rhino-mocks