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

如何在Mockito中模拟instanceof

伊羽
2023-03-14
mockedClass instanceof SampleInterface

mockedclass是模拟抽象类:mockedclass,而sampleinterface是接口。这是失败点:

Validate.isTrue(mockedClass instanceof SampleInterface, "The mockedClass is not a SampleInterface");

如何模拟这段代码?

共有1个答案

卢鸿彩
2023-03-14

听起来您需要mocksettings.extrainterfaces

MockedClass mockedClass = mock(MockedClass.class,
    withSettings().extraInterfaces(SampleInterface.class));

请注意,它自带警告标签:

这个神秘的特性应该会非常偶尔的使用。被测试对象应该确切地知道它的协作者&依赖关系。如果您碰巧经常使用它[原文如此],请确保您真的生成了简单、干净和可读的代码。

作为另一种选择,创建一个用于测试的接口,该接口扩展了您希望模拟实现的所有接口,并以通常的方式模拟该接口。

 类似资料:
  • 我正在为我的服务层编写单元测试。我的服务层有多个自动生成的字段。我想只模拟其中一个和其他初始化为自动驾驶。 服务接口 服务实现 测试类 我只想嘲笑productRepository字段,但不想嘲笑productManager 问题是productManager 是否可以自动初始化它们?就像它们在运行带有完全加载的上下文的Spring引导应用程序时被初始化一样。

  • 我尝试测试一个发送jms消息的类,但无法模拟JmsTemplate JmsProducer.class: JmsProducerTest。类别: 当我运行这个测试用例时,它给了我:java。lang.IllegalArgumentException:对象不是声明类的实例 你对这个问题有什么想法吗?

  • 我想模拟注释来检查根据给定注释返回结果的类的良好行为。 Erg.mockito.exceptions.misusing.WurnTypeOfReturnValue:annotationType()不能返回KClassImpl annotationType()应该返回Class 如果你不确定为什么你会超过错误,请继续阅读。由于语法的性质,上面的问题可能会发生,因为: 此异常可能发生在错误编写的多线程

  • 问题内容: 我有一个使用当前时间进行一些计算的函数。我想使用模仿器模拟它。 我要测试的课程示例: 我想要类似的东西: 可以嘲笑吗?我不想更改“已测试”的代码以进行测试。 问题答案: 正确的做法是重组代码,使其更具可测试性,如下所示。重组代码以消除对Date的直接依赖关系将使您可以为正常运行时和测试运行时注入不同的实现:

  • 我使用的是Spring3.1.4.Release和Mockito1.9.5。在我的春季课上,我有: 我想为我的“Defaulturl”字段模拟一个值。请注意,我不想模拟其他字段的值--我希望保持这些字段的原样,只保留“Defaulturl”字段。还要注意,我的类中没有显式的“setter”方法(例如),我不想仅仅为了测试的目的创建任何方法。 既然如此,我如何模拟一个字段的值呢?

  • 问题内容: 我使用,并且需要模拟其行为。由于不可能直接模拟,因此我创建了一个接口 Clock.java JodaTime.java 这是我要测试的方法 如您所见,依赖于当前时间相对于[4 PM-7PM] EST时间间隔和托运人名称的时间。由于Shipper将通过参数传递,因此我们可以对其进行单元测试。但是我需要嘲笑时间。所以这是我尝试的 自从我在下午6点通过考试以来,该测试应该会失败,但这是下午4