我有下一个表达
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做了什么,它不是虚拟的? 感谢
答案 0 :(得分:1)
您不需要在单元测试中测试GetLeftMouseButtonDown
功能。你在实际测试什么?您正在测试Linq,Rx和EventArgs对象,您没有写过这些对象。我可能会编写一个快速的交互式集成样式测试,以确保我实际上获得了左键单击,并称之为好。
您在测试中要做的是将IObservable<Point>
传入测试中的方法。然后,您可以传入可以将值放入的IObservable
。我可能只使用Subject
对象,不需要编写自己的模拟实现。
然后将任何值的数值流射入您要测试的值,并在测试中观察结果。