向scala中的套接字写入单元测试

问题描述 投票:0回答:1

我有以下给出给定套接字的代码,将内容写入套接字,并基于此返回RightLeft

class Gateway {
  def sendEvent(
                 str: String,
                 socket: Socket): Either[CustomException, String] = {
    Try {
      val writer =
        new BufferedWriter(new OutputStreamWriter(socket.getOutputStream))


      writer.write(s"${str}\n")
      writer.flush()
    } match {
      case Success(_) => Right(str)
      case Failure(_) => Left(CustomException)
    }
  }
}

我正在尝试对sendEvent方法进行单元测试。但是行

new BufferedWriter(new OutputStreamWriter(socket.getOutputStream))

防止我这样做。现在,由于我总是需要打开一个新连接,因此无法将BufferedWriter作为依赖项传入。

我正在使用ScalatestMockito进行测试。任何有关如何对该代码进行单元测试的想法都将受到高度赞赏。在此先感谢!!!

scala sockets mockito serversocket scalatest
1个回答
0
投票

我认为,除了拥有精美的测试覆盖率报告之外,对该课程进行单元测试是没有意义的。

我认为该代码应该由更大模块的集成测试间接覆盖。

如果您真的想单独测试它,我会在测试中启动一个本地测试服务器并向其发送消息。

这样的测试宁愿验证您对套接字工作流程的理解,也不是对业务逻辑的理解。

© www.soinside.com 2019 - 2024. All rights reserved.