RX的Mock-从鼠标处理事件的构造



我有以下表达式

 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实现。

然后向其中注入你想要测试的任何值流,并在测试中观察结果。

最新更新