【发布时间】:2016-03-08 07:57:39
【问题描述】:
我在我的小项目中使用 scalatest 和 scalamock。我创建了一个 trait 和一个类,以及它的伴生对象。
trait A{
def getSomething(arg1)
}
class B(field1)....
object B extends A{
def apply(arg1) = new B(getSomething(arg1))
}
代码运行良好,但在测试此代码时出现问题。单元测试应该是独立的,因此我应该以某种方式模拟/存根特征 A:
val fakeA = stub[A]
(fakeA.getSomething _).when(arg).returns(res)
现在......我应该如何在我的单元测试中使用这个模拟特征?模拟创建一个对象(不是类型),并且使用这样的代码我无法将它“传递”给我的对象(或使用)。我怎样才能实现我的目标(在我的 B 对象中存根/模拟 getSomething())?我试图将对象 B 拆分为 Blogic 和 B 扩展 Blogic。但是然后呢?
【问题讨论】:
-
您实际上要在这里测试哪种逻辑?谁在使用 mocked 方法?
-
模拟的方法将用于我的单元测试。在这里我想测试一下,apply 方法是否创建了有效的对象(即,它为我的 B 类的正确字段分配了正确的值(由我试图模拟的方法返回)。
-
然后做
new B(whateverYourMockWouldReturn),然后测试一下。