当前位置: 首页 > 知识库问答 >
问题:

是否可以使用ScalaMock模拟相同测试类的/stub方法?

南宫阳焱
2023-03-14

对于Mockito和其他测试框架,通常有方法在测试类中模拟方法的功能。我似乎无法让ScalaMock接受同样的方式。

class A {
 def methodUnderTest()
 def methodUsedInMethodUnderTest()
}

在测试课上,我是:

(A.methodUsedInMethodUnderTest _)
.expects.....
a.methodUnderTest shouldEqual ..

我知道,如果你嘲笑/剔除类,然后在真实实例上调用相同的功能,这是行不通的。但是有一些变通方法,可以使用模拟调用等。

如果这是错误的方法,测试在同一个测试类中使用其他方法的方法的最佳方法是什么?我认为解耦方法是最好的实践。

谢谢

共有1个答案

长孙淳
2023-03-14

如果我正确理解了您的问题,您可以创建一个模拟a,然后告诉ScalaMock执行methodUnderTest的真正实现。

val aMock = mock[A]

when(aMock.methodUnderTest).thenCallRealMethod()
when(aMock.methodUsedInMethodUnderTest).thenReturn(someValue)

aMock.methodUnderTest shouldEqual someOtherValue
 类似资料:
  • 我对ScalaMock和嘲笑都是新手。我试图测试一个方法,它调用另一个(mocked)类中的方法,然后在返回的对象上调用方法。 详细资料: 所以我使用ScalaTest,这个测试涉及到五个类... 我正在测试的子指令 在测试中必须被嘲笑的机器 构造机器对象所需的寄存器 我创建为原始机器类的MockableMachine没有空构造函数,因此(据我所知)无法模拟 最后是我的测试类SubInstruct

  • 我试图测试一个类,它具有两个函数:和。加载,调用,然后执行一些操作并返回新的。为举例起见: 使用如何编写测试代码? 我试过: 我希望测试成功通过,并且得到(我知道scalamock用mock替换了所有现有函数,但这不是预期的行为) 编辑:我在mockito中找到了这个引用这个概念的答案,但我不确定scalamock是否支持这种嘲讽,以及为什么要反对这种嘲讽。

  • 问题内容: 我有一个接受默认参数的方法: 我有一个使用此方法的测试用例: 如果我放入调试点并检查该属性,则返回模拟值。但是,测试继续失败,并且断言指示从我的实际值中分配了值。我知道这是因为在导入时设置了关键字参数,并且未考虑我的模拟。 调试器 有没有一种方法可以在测试时覆盖此值,以便我可以使用模拟对象行使默认路径? 问题答案: 定义函数后,函数会将其参数默认值存储在属性中,因此可以对其进行修补。就

  • 当我尝试模拟的任何其他方法时,模拟会起作用,但不能使用方法。 这是ScalaMock bug还是我做错了什么?

  • 我对JUnit测试和Mockito框架非常陌生,我有一个用例,我想测试一个方法,该方法在内部调用我需要测试的同一类的重载方法。我已经为第一个方法编写了单元测试,希望跳过内部的第二个方法调用。下面是代码片段。 需要测试的类- 测试班-

  • 我想知道是否有人试图使用jmeter测试gRPC应用程序。 我希望 我可以使用非阻塞/异步存根编写一个gRPC客户端类,该存根对服务器进行非阻塞调用, 创建上述客户端的Jar 将Jar导入JMeter 使用Jeter BeanShell采样器中的Java方法 在花时间尝试上述方法之前,我想看看是否有人尝试过类似的方法 如果上述解决方法有效? 每个线程会创建一个单独的传输控制协议吗? 我们已经用py