Moq SignalR客户端事件

时间:2015-03-10 18:05:08

标签: testing mocking signalr

我有一个使用SignalR .Net客户端与服务器通信的服务,我想添加一些测试来检查客户端如何对连接问题作出反应(慢速互联网,间歇连接,根本没有连接) ,问题是我不知道如何模仿这个,以便我可以创建测试。

我是嘲笑的新人,所以我很难用这个。

1 个答案:

答案 0 :(得分:0)

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

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

在我的情况下,一些代码需要实际的具体HubProxy,所以我所做的是创建一个返回IHubProxy的工厂,这样我就可以做那些依赖于该工厂和其他工厂的具体类型的东西。代码依赖于对IHubProxy的依赖,这样我可以模拟具体的HubProxyFactory和HubProxy代码

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

在调整代码后,它只是一些模拟魔法的问题,在我的情况下

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);