我的 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);
}
}