如何在Mockito中模拟instanceof

时间:2014-12-22 12:18:43

标签: java unit-testing mocking mockito

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

mockedClass instanceof SampleInterface

mockedClass是模拟抽象类:MockedClassSampleInterface是接口。这是失败的观点:

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

如何模拟此代码?

2 个答案:

答案 0 :(得分:18)

听起来你需要MockSettings.extraInterfaces

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

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

  

这个神秘的功能应该偶尔使用。被测物体应该确切地知道它的合作者和依赖。如果你经常使用它而不是[原文如此],请确保你真正生产简单,干净和安全;可读代码。

作为替代方案,创建一个测试接口,扩展您希望模拟实现的所有接口,并以通常的方式模拟。

答案 1 :(得分:0)

除了另一个答案:

如果可能的话,你应该改为模拟界面,这意味着像这样创建模拟:

SampleInterface mockedClass = mock(SampleInterface.class); // not mock(MockedClass)