我是Moq的新手,并且看似简单的问题。
我有两个接口--IClient和IClientFactory,其方法如下所示:
public interface IClientFactory
{
IClientHandler Get(TcpClient tcpClient);
}
public interface IClient
{
void Run();
}
实现的Run()方法当前打开一个流并发送/接收消息。 我正在尝试测试我的Server类,尤其是Listen方法。 我如何模拟这个以便我的Server类接受客户端并从中接收消息?
这是我的Server类中的代码:
public void Listen(CancellationToken cancellation)
{
listener.Start(_maxConnections);
//.... Accept Tcp Client here ....
var handler = _handlerFactory.Get(client); <--- GET CLIENT HERE
//.... Start Communication ....
}
答案 0 :(得分:0)
创建一个IHandlerClient
的模拟,它可以满足您的需求。这完全取决于Listen方法对IHandlerClient
所做的事情,你没有展示。
现在您已经拥有了handlerClientMock
,设置了IHandlerFactory
模拟,以便其Get方法返回该模拟。
var mock = new Mock();
mock.Setup(f => f.Get(It.IsAny()))
.Returns(handlerClientMock.Object);
现在,您可以创建传递IHandlerFactory
模拟器的服务器对象。