我需要编写一个单元测试,其中测试对象的一个依赖项将被模拟。在那个模拟对象中,我想覆盖一个函数(我根本不关心其他函数)。
我需要做的是提供该功能的全新实现。我不是特别高兴为每个潜在的输入提供模拟式when / thenResult
对,即我不想写:
when(mock.foo(5)).thenResult(3)
when(mock.foo(7)).thenResult(121)
...
我宁愿写一些类似的东西:
mock.foo = (a: Int) => if (a == 5) 3 else ...
我应该选择哪种模拟框架以简单的方式替换函数的整个实现?
答案 0 :(得分:0)
如果您只是覆盖一种方法并希望通过实际定义方法来实现它,那么您根本不需要模拟框架。
如果它是一个课程,只需扩展您的课程,覆盖该方法并注入您的扩展程序。
如果它是一个对象或最终类,当然你无法扩展,但是你就不能用很多框架进行模拟,或者很容易注入一个替代。
答案 1 :(得分:0)
http://scalamock.org/user-guide/advanced_topics/
参见" onCall"方法
(fooMock.increment _)期望(*)onCall {arg:Int => arg + 1}