我有以下表达式
private IObservable<Point> GetLeftMouseDown()
{
return from pattern in Observable.FromEventPattern<MouseButtonEventArgs>(_element, "MouseDown")
where pattern.EventArgs.ChangedButton == MouseButton.Left
select pattern.EventArgs.GetPosition(_element);
}
是否可以模拟测试的事件源?我应该如何处理GetPositionMethod,它调用系统函数,但它不是虚拟的?
您不需要在单元测试中测试GetLeftMouseButtonDown
函数。你到底在测试什么?您正在测试Linq、Rx和EventArgs对象,它们都不是您编写的。我可能会写一个快速的交互式集成风格测试,确保我确实能点击左键,并称之为好。
在测试中,您想要做的是将IObservable<Point>
传递到被测试的方法中。然后,您可以传入一个IObservable
,您可以将值放入其中。我可能只使用Subject
对象,而不需要编写自己的mock实现。
然后向其中注入你想要测试的任何值流,并在测试中观察结果。