Moq SignalR 客户端事件

Moq SignalR Client events

我有一个使用 SignalR .Net 客户端与服务器通信的服务,我想添加一些测试来检查客户端对连接问题的反应(慢速 I​​nternet、间歇性连接、无连接所有),问题是我不知道如何模拟它以便我可以创建测试。

我是模拟的新手,所以我很难做到这一点。

您需要设计您的代码,以便您只依赖于 IHubProxy 接口

你可以看看我的.NET客户端库,看看如何解决 https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/tree/master/SignalR.EventAggregatorProxy.Client.DotNet

在我的例子中,一些代码需要实际的具体 HubProxy,所以我所做的是创建一个 returns 一个 IHubProxy 的工厂,这样我就可以做对具体类型具有依赖性的事情该工厂和所有其他代码都依赖于对 IHubProxy 的依赖,这样我就可以模拟具体的 HubProxyFactory 和 HubProxy 代码

https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/blob/master/SignalR.EventAggregatorProxy.Client.DotNet/Bootstrap/Factories/HubProxyFactory.cs

代码调整后,就我而言,这只是一些 Mock 魔法的问题

WhenCalling<IHubProxyFactory>(x => x.Create(Arg<string>.Is.Anything, Arg<Action<IHubConnection>>.Is.Anything, Arg<Action<IHubProxy>>.Is.Anything, Arg<Action>.Is.Anything, Arg<Action<Exception>>.Is.Anything, Arg<Action>.Is.Anything))
                .Callback<string, Action<IHubConnection>, Action<IHubProxy>, Action, Action<Exception>, Action>((u, c, started, reconnected, f, connected) =>
                {
                    started(proxy);
                    reconnectedCallback = reconnected;

                    return true;
                })
                .Return(proxy);