当前位置: 首页 > 面试题库 >

如何验证方法是否由Mockito从具有相同类的其他方法调用

皇甫敏达
2023-03-14
问题内容

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

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();
    }
}

请记住,我有一个更为复杂的文件,该文件可供其他人使用,它们必须全部放在一个文件中。


问题答案:

您将需要一个间谍,而不是模拟A:

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


 类似资料:
  • 问题内容: 我是Mockito的新手。 给定下面的类,如何在调用后使用Mockito验证一次foo被调用的对象呢? 我想打以下电话, 的模拟实例在哪里? 问题答案: 如果注入Bar实例,或用于创建Bar实例的工厂(或其他483种方法之一),则你将具有执行测试所需的访问权限。 工厂示例: 给定一个这样的Foo类: 在你的测试方法中,你可以像这样注入BarFactory: 奖励:这是TDD如何推动代码

  • 问题内容: 有没有一种方法可以使存根方法在后续调用中返回不同的对象?我想这样做是为了测试来自的不确定响应。即,不管方法的返回顺序如何进行测试,结果都保持恒定。 我要测试的代码看起来像这样。 问题答案: 你可以使用方法来做到这一点(与链接时): 或使用等效的静态doAnswer方法:

  • 问题内容: 在Java中使用Mockito如何验证某个方法仅被调用一次且其确切参数忽略对其他方法的调用? 样例代码: 在本节中应该做什么? 已经尝试失败: 不。它不允许调用其他方法,例如。 不。没有考虑到我们允许一个呼叫。 问题答案: 第一个检查预期的参数化呼叫,第二个检查根本没有一个呼叫。

  • 问题内容: 我想验证以下行为的方法如下。 在我的@Test类中,我希望做这样的事情来验证是否使用“ exception.message”和再次使用“ exception.detail”进行了调用 但是Mockito抱怨​​如下 我如何告诉Mockito检查两个值? 问题答案: 进一步的阅读使我尝试使用ArgumentCaptors和以下作品,尽管比我想要的更为冗长。

  • 问题内容: 我需要进行以下测试,以验证是否已调用Person类的所有getter。到目前为止,我已经使用了Mockito的verify()来确保每个getter都被调用。有没有办法通过反思做到这一点?可能是将新的吸气剂添加到Person类的情况,但是测试会错过这一点。 问题答案: 通常,不要嘲笑被测类。如果您的测试是针对Person的,则您永远都不会看到它,因为这很明显地表明您正在测试模拟框架而不

  • 所以我肯定有类似的东西在那里,但我已经搜索了一个小时,还没有找到确切的我要找的东西。假设我有一个这样的类: 我该如何制作这样的作品?