【发布时间】:2019-07-30 14:45:41
【问题描述】:
我正在为一个类(A 类)编写单元测试,该类(A 类)将另一个类(B 类)作为其参数,而该类(B 类)又将另一个类(C 类)作为其参数。我需要模拟 B 类来测试 A 类。但是,模拟不接受类参数。
所以,我创建了一个特征(trait BsTrait),我的 B 类扩展了 BsTrait。根据这个答案 - (ScalaMock. Mock a class that takes arguments)。
我想测试的班级 - class A(b: BsTrait){}
B 类 - class B(c: C){}
C类-class C{}
B类的特征 - trait BsTrait{}
我的单元测试 -
val mockFactory = mockFunction[C, B]
val mockClient = mock[BsTrait]
mockFactory.expects(new C).returning(mockClient)```
Error: /path/to/file/Test.scala:63: type mismatch; found : com.example.BsTrait required: com.example.B
mockFactory.expects(new C).returning(mockClient)
我也尝试为 mockFunction 添加返回类型,但它抛出了同样的错误。
【问题讨论】:
标签: scala unit-testing mocking