gpt4 book ai didi

c# - 使用 Moq 实现不接受任何参数并返回 void 的方法

转载 作者:太空宇宙 更新时间:2023-11-03 15:22:01 25 4
gpt4 key购买 nike

我是 Moq 的新手,遇到了一个看似简单的问题。

我有两个接口(interface) - IClient 和 IClientFactory,它们的方法如下所示:

public interface IClientFactory 
{
IClientHandler Get(TcpClient tcpClient);
}

public interface IClient
{
void Run();
}

实现的 Run() 方法当前打开流并发送/接收消息。我正在尝试测试我的服务器类,尤其是 Listen 方法。我如何模拟它以便我的服务器类接受客户端并从中接收消息?

这是我的服务器类中的代码:

public void Listen(CancellationToken cancellation)
{
listener.Start(_maxConnections);
//.... Accept Tcp Client here ....
var handler = _handlerFactory.Get(client); <--- GET CLIENT HERE
//.... Start Communication ....
}

最佳答案

  1. 创建一个模拟 IHandlerClient 来执行您想要的操作。这完全取决于 Listen 方法将如何处理 IHandlerClient,您没有显示它。

  2. 现在您有了 handlerClientMock,设置您的 IHandlerFactory 模拟,以便其 Get 方法返回该模拟。

var mock = new Mock();
mock.Setup(f => f.Get(It.IsAny()))
.Returns(handlerClientMock.Object);
现在您可以创建传递该 IHandlerFactory 模拟的 Server 对象。

关于c# - 使用 Moq 实现不接受任何参数并返回 void 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36918372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com