【问题标题】:Deep stubbing in ScalaScala 中的深度存根
【发布时间】:2020-06-01 21:46:12
【问题描述】:

我在 Scala 上下文中面临模拟嵌套函数问题。我找到了这样的答案: How to mock fields of inner singleton objects? 有效但不简洁。我想知道在 Scala 社区中是否有类似 mockito 的 deepstub 之类的东西?

【问题讨论】:

    标签: scala unit-testing mocking mockito


    【解决方案1】:

    您可以从mockito-scala 使用ReturnsDeepStubs。这是一个工作示例

    import org.mockito.stubbing.ReturnsDeepStubs
    import org.mockito.{ArgumentMatchersSugar, IdiomaticMockito}
    import org.scalatest.flatspec.AnyFlatSpec
    import org.scalatest.matchers.should.Matchers
    
    trait Bar {
      def zar: Int
    }
    trait Foo {
      def bar: Bar
    }
    
    class MockitoScalaDeepStubExampleSpec extends AnyFlatSpec with Matchers with IdiomaticMockito with ArgumentMatchersSugar {
      "mockito-scala" should "provide deep stubs" in {
        val foo = mock[Foo](ReturnsDeepStubs)
        foo.bar.zar returns 42
        foo.bar.zar should be (42)
      }
    }
    

    【讨论】:

    • 不得不模拟一个被模拟对象的响应说明了为什么模拟从来都不是一个好主意,而且你的设计比它应该的耦合度更高。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    相关资源
    最近更新 更多