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
对象,无需编写自己的模拟实现。
然后将您要测试的任何值流输入其中,并在测试中观察结果。
我有以下表达式
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
对象,无需编写自己的模拟实现。
然后将您要测试的任何值流输入其中,并在测试中观察结果。