我有一个函数,它具有以下类型签名:
def post(target: String, partition: String, payload: String): IO[Boolean]
在该功能中,向第三方发出调用,以通过awssdk
将该数据发布到服务。对于测试,我不希望这些调用被实际放置,这让我想到了scalamock,但我不确定如何在查看文档时做到这一点。
在post功能中,在设置凭据后,我可以利用aws客户端的私人实例来提供此服务。这个实例上有一个特定的方法负责对aws的调用。
如何利用scalamock来模拟awssdk,以测试我围绕它的代码,而不进行实际调用?
您有定义此方法的特性吗?然后,您可以使用Scalamock获取它的一个实例,并使它使用您希望的任何值来响应post
调用
https://scastie.scala-lang.org/KgJ0kptnRaiteNTWPBzrow
trait MyService {
def post(target: String, partition: String, payload: String): Future[Boolean]
}
val mockedService = mock[MyService]
(mockedService.post _)
.expects("a", "b","c")
.returning(Future.successful(true))
.once()
mockedService.post("a", "b", "c")