java - 如何在 Mockito 中模拟 instanceof

标签 java unit-testing mocking mockito

我有一段代码,我想用 Mockito 测试:

mockedClass instanceof SampleInterface

mockedClass 是模拟抽象类:MockedClassSampleInterface 是一个接口(interface)。这是失败点:

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

如何模拟这段代码?

最佳答案

听起来你需要MockSettings.extraInterfaces .

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

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

This mysterious feature should be used very occasionally. The object under test should know exactly its collaborators & dependencies. If you happen to use it often than [sic] please make sure you are really producing simple, clean & readable code.

作为替代方案,创建一个用于测试的接口(interface),它扩展了您希望模拟实现的所有接口(interface),并以通常的方式对其进行模拟。

public abstract class ForTest implements SampleInterface {}

MockedClass mockedClass = mock(ForTest.class);

关于java - 如何在 Mockito 中模拟 instanceof,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27602598/

相关文章:

java - 如何从 vaadin 的 'com.vaadin.DefaultWidgetSet' 错误中恢复

javascript - 如何在 Angular 2 或 4 的 Jasmine 测试中模拟鼠标事件

python - mock.call_count 的线程安全版本

java - 在 JUnit 中设置测试的成本 - 使用模拟对象与遗留代码中的存储库测试

iMail 的 JavaMail API -- java.net.SocketException : Permission denied: connect

java - 解决 Hibernate 在多线程应用程序中的错误

java - 当进行意外调用时,如何让 Mockito 模拟导致失败?

unit-testing - 在 MSTest 中,如何使用 [ExpectedException(typeof(ApplicationException))] 验证确切的错误消息

javascript - 用 jasmine 测试嵌套对象

java - 安卓设置 fragment