我不确定我是否滥用了基于交互的测试,或者我是否做了一些概念上的错误。我正在开发一个Spring Boot应用程序(Kotlin),我的测试使用的是Spock/Groovy。
我有一个正在测试的类,它调用另一个服务来查询信息。被测试的类应该缓存结果。但是,我不能用返回值模拟一个方法并检查调用的次数,因为当我添加调用检查时,被模拟的方法总是返回null。
我创建了一个独立的示例,演示了这个问题。
@Service
class DemoService(private val downstreamService: DownstreamService) {
fun demo(id: String): String {
val something = downstreamService.something(id)
return something
}
}
@Service
class DownstreamService {
fun something(id: String): String {
return id
}
}
class DemoServiceTest extends Specification {
def downStream = Mock(DownstreamService)
def demoService = new DemoService(downStream)
def "value check"() {
given:
def test = "my test string"
downStream.something(test) >> "xxx"
when:
def actual = demoService.demo(test)
then:
actual == "xxx" // works
}
def "invocation check"() {
given:
def test = "my test string"
downStream.something(test) >> "xxx"
when:
demoService.demo(test)
then:
1 * downStream.something(test) // works
}
def "combined check"() {
given:
def test = "my test string"
downStream.something(test) >> "xxx"
when:
def demo = demoService.demo(test)
then:
1 * downStream.something(test)
demo == "xxx" // fails because demo is null
}
}
前两个测试按预期工作,但最后一个测试失败了,因为当我添加调用检查时,返回值总是null。
将mock与调用计数检查相结合存在一个问题,因为那时没有调用mock。
def "combined check"() {
given:
def test = 'my test string'
when:
def demo = demoService.demo(test)
then:
1 * downStream.something(test) >> 'xxx'
demo == 'xxx'
}
我试图模拟一些方法调用,但不幸的是我一直返回null。你能帮我指出我可能出错的地方吗?我正在使用time(). thenBack(),我觉得我正确地模拟了返回变量。事先非常感谢。我是JUnit和Mockito的新手,所以如果我错过了任何明显的东西,我很抱歉。 ServiceTest.java Service.java
最简单的例子:我有以下方法: 我想模拟此方法以返回传递的参数作为结果。例如: 我知道我可以硬编码这种行为,但我希望它是通用的。
此代码在控制台中有以下输出: Method1 Method2 Method3 而我希望它是 Method1 Method2 Mock method3 方法3被嘲弄了,那么为什么它没有被调用呢?
我创建了一个接口,以便可以在对话和片段之间进行通信。 目标:当用户从对话框中选择任何内容时,应将其显示在文本视图中。 在这个界面中,我创建了一个界面方法,在主活动中调用,并传递用户在对话框中选择的值。与用户选择的值一起,在我的片段中,我创建了一个方法,将文本视图设置为该值。然而,每当我调用该方法时,它总是返回null。 我对日志进行了大量测试,发现通过我的方法传递的值不是空的,一切似乎都按照我想要
我有两门课。在一节课上,我创建并发起了一个活动,如下所示: 客户添加类 MyWindow类 现在,当我从类调用方法时,(当我订阅方法到事件时),不会被调用。调试器显示为空。我搜索了几个小时,没有找到解决办法。我跟随了这个链接,但仍然为空。如有任何指导/帮助,将不胜感激。