Mock for RX -construction 处理来自鼠标的事件

Mock for RX -construction which process events from mouse

我有以下表达式

 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 和您编写的 none 的 EventArgs 对象。我可能会编写一个快速的交互式集成样式测试,以确保我实际上获得了左键点击,并称其为好。

你想在测试中做的是将一个IObservable<Point>传递给被测方法。然后您可以传入一个 IObservable ,您可以将值放入其中。我可能只使用 Subject 对象,无需编写自己的模拟实现。

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