代码之家  ›  专栏  ›  技术社区  ›  Llyle bonjorno

测试IO流交互

  •  1
  • Llyle bonjorno  · 技术社区  · 15 年前

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

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

    为了测试的目的,我希望将一个模拟的流DI到这个方法中,但是每当使用流时,我发现缺乏抽象性。

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

    最好的方法是什么?

    2 回复  |  直到 14 年前
        1
  •  3
  •   AwesomeTown    15 年前

    如果你只想通过一个“假”上传,你可以构建一个 MemoryStream 在你的测试套里,把它传进去。

        2
  •  1
  •   codybartfast    15 年前

    我也倾向于使用记忆流。对于某些测试,您可能希望重载read方法以返回小于请求的字节数的值。(我认为memoryStream总是返回请求的字节数,除非它到达流的末尾,但是网络流返回的字节数比请求的字节数还要少,甚至在流的末尾之前也是如此。)