用于处理来自鼠标的事件的RX -constraction模拟

时间:2016-01-11 16:50:10

标签: unit-testing system.reactive

我有下一个表达

 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做了什么,它不是虚拟的? 感谢

1 个答案:

答案 0 :(得分:1)

您不需要在单元测试中测试GetLeftMouseButtonDown功能。你在实际测试什么?您正在测试Linq,Rx和EventArgs对象,您没有写过这些对象。我可能会编写一个快速的交互式集成样式测试,以确保我实际上获得了左键单击,并称之为好。

您在测试中要做的是将IObservable<Point>传入测试中的方法。然后,您可以传入可以将值放入的IObservable。我可能只使用Subject对象,不需要编写自己的模拟实现。

然后将任何值的数值流射入您要测试的值,并在测试中观察结果。