gpt4 book ai didi

java - 是否可以使用 Mockito 验证测试的对象方法调用?

转载 作者:搜寻专家 更新时间:2023-10-31 19:32:27 24 4
gpt4 key购买 nike

我有一些业务逻辑类:

public class SomeService {
public void doFirst() {}

public void doSecond() {
doFirst();
}
}

并测试它:

public class SomeServiceTest {

private SomeService service;

@Before
public void setUp() {
service = new SomeService();
}

@Test
public void doSecond_someCondition_shouldCallFirst() {

// given
...

// when
service.doSecond();

//then
how to verify doFirst() was called?
}
}

如何验证 doFirst() 不是在模拟中调用的,而是在真实服务中调用的?

最佳答案

我想知道你为什么要测试,你的测试方法调用什么方法。对我来说听起来很像白盒测试。

在我看来,您想要验证调用的结果而不是到达那里的方式,因为这可能很容易改变(即在重构时)。

因此,如果 doSecond() 的结果与 doFirst() 相同,您可以为 doFirst() 编写测试并使用相同的测试(即断言集)来测试 doSecond()。

但是如果你真的想测试 doFirst() 是否已经被 doSecond() 调用,你可以将你的服务包装在一个 spy 中,然后在 spy 上调用验证:

//given
SomeService service = new SomeService();
SomeService spy = Mockito.spy(service);
//when
spy.doSecond();
//then
verify(spy).doFirst();

关于java - 是否可以使用 Mockito 验证测试的对象方法调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34256379/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com