测试IO.Stream交互

时间:2009-02-04 02:51:31

标签: vb.net unit-testing dependency-injection io

我的业务逻辑层中有一个方法接受一个流,在GUI中来自用户上传文件,我感兴趣的是哪种方法可以测试该方法是否适当地使用此流来制作决定。

public Sub Initialize(ByVal uploadStream As Stream)
    ''// Logic using uploadStream
End Sub

出于测试目的,我希望在这个方法中使用一个模拟的流,但是在使用流时我发现缺乏抽象。

Intuition告诉我需要创建一个Stream包装器,它允许我DI包装器的接口来测试我的逻辑与流wapper的交互。

最好的方法是什么?

2 个答案:

答案 0 :(得分:3)

如果您只是想要一种传递“假”上传的方法,您可以在测试工具中构建MemoryStream并将其传入。

答案 1 :(得分:1)

我也倾向于使用MemoryStream。对于某些测试,您可能希望重载Read方法以返回少于请求的字节数。 (我认为MemoryStream总是返回请求的字节数,除非它到达流的末尾,但是即使在流结束之前,网络流也可以返回比请求更少的字节数。)