我的 SUT 需要 aStream
作为参数,做一些工作然后返回 a byte[]
:
public byte[] ProcessRequest(INetworkStream networkStream)
INetworkStream
包裹Stream
。
我想模拟Stream
参数以控制它读取的字节,以便我可以使用这些字节测试方法。
stream.Read(buffer, offset, size);
Stream.Read(...)
返回一个int
并填充buffer
参数。
使用Moq
我如何伪造调用的结果(所以我控制作为返回值INetworkStream.Read(...)
的长度和参数)?byte[]
buffer
流包装器:
public class FakeNetworkStream : INetworkStream
{
private NetworkStream stream;
public FakeNetworkStream(NetworkStream ns)
{
if (ns == null) throw new ArgumentNullException("ns");
this.stream = ns;
}
public bool DataAvailable
{
get
{
return this.stream.DataAvailable;
}
}
public int Read(byte[] buffer, int offset, int size)
{
return this.stream.Read(buffer, offset, size);
}
public void Write(byte[] buffer, int offset, int size)
{
this.stream.Write(buffer, offset, size);
}
}