我创建了一个组件,它创建一个
std::net::TcpStream
并在其生命周期内读取和写入。现在我想为它编写测试;它是否连接到正确的地址?它是否发送了正确的数据?它能否处理接收到的无效数据?然而,由于我只开始使用Rust,大概才三天左右,我不确定如何继续。在Java中(我已经用Java做了比Rust长得多的时间),我至少有以下几种可能性:
- 创建一个测试TCP服务器来收集发送到它的数据并控制回送什么。
- 将I/O操作提取为trait,为
TcpStream
和TestTcpStream
实现该trait,并在测试期间使用TestTcpStream
。
Rust还提供了其他一些我还不知道的东西吗?
(稍微澄清一下:我不是寻找如何执行这些操作,我可能可以弄清楚,我正在寻找的是除我列出的两个之外的更多可能性。)
std::net::TcpListener
,它为每个连接提供了一个TcpStream
。对于第二个问题,TcpStream
已经实现了std::io::Write
和std::io::Read
特性,你可以期望使用这些特性而不是具体的TcpStream
来处理你的IO逻辑。 - undefinedTcpStream
实现了Read
和Write
接口,只需按照这个问题中给出的建议进行操作即可。 - undefinedRead
和Write
肯定是可行的选项,但这仍然需要我创建TcpStream
。通常情况下,我会使用工厂模式来解决这个问题,在Rust中是否也被认为是惯用的呢?:) - undefinedRead
和Write
接口的对象。从那里开始,你可以通过提供另外一个提供这两个字节通道的对象来“模拟”TCP流。 - undefined