1
我有一個數據服務接口與方法:嘲諷的invokeOperation進行單元測試使用犀牛製品
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);
}
但它從來沒有因此導致的執行......原來, :
系統。 ServiceModel.DomainServices.Client.InvokeOperation
是一個密封類,並且運行時,犀牛嘲笑拋出一個異常
無法建立密封類
我的嘲笑我正在尋求改進我的設計以支持此測試案例的建議;並仍然使用嘲笑。
謝謝Patrick! 我剛結束這樣做。我正在將** LoadOperation **封裝在Entity查詢的接口後面。出於某種原因,我沒有回到我原來的API來包裝InvokeOperation。 – 2011-03-11 23:24:36