java - 如何通过mockito验证是否从其他具有相同类的方法调用

标签 java mockito

我想测试一些在同一个类中调用其他方法的方法。它们基本上是相同的方法,但具有不同数量的参数,因为数据库中有一些默认值。我在这个上显示

public class A{
    Integer quantity;
    Integer price;        

    A(Integer q, Integer v){
        this quantity = q;
        this.price = p;
    }

    public Float getPriceForOne(){
        return price/quantity;
    }

    public Float getPrice(int quantity){
        return getPriceForOne()*quantity;
    }
}

所以我想测试调用getPrice(int)方法时是否调用了getPriceForOne()方法。基本上像平常一样调用 getPrice(int) 并模拟 getPriceForOne。

import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
....

public class MyTests {
    A mockedA = createMockA();

    @Test
    public void getPriceTest(){
        A a = new A(3,15);
        ... test logic of method without mock ...

        mockedA.getPrice(2);
        verify(mockedA, times(1)).getPriceForOne();
    }
}

请记住,我有一个更复杂的文件,它是其他人的实用程序,它们必须都在一个文件中。

最佳答案

你需要一个 spy ,而不是一个模拟 A:

    A a = Mockito.spy(new A(1,1));
    a.getPrice(2);
    verify(a, times(1)).getPriceForOne();

关于java - 如何通过mockito验证是否从其他具有相同类的方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8755449/

相关文章:

java - 将模拟对象添加到 Mockito spy 列表 <>

android - 需要帮助来使用 Mockito 和 JUnit4 编写单元测试

java - tagForChildDirectedTreatment(boolean) 弃用

java - 请求范围的 bean 的 bean 创建错误

java - 使用 PowerMock 模拟枚举时静态字段为 Null

java - 在编写 Junit 测试时,Mockito.mock 比使用 new 有何优势?

java - 如何验证是否使用 Mockito 调用了两种方法中的一种?

java - PHP Java Bridge 是否具有与 JSP->Java 相同的性能?

Java堆外内存和大页面

Java WebFlux/Reactor - 使用仅在 Mono<Set<String>> 中找到的项目过滤 Flux<List<String>>