检查模拟对象的类类型

Ger*_*rdo 9 mocking instanceof mockito

目前我正在测试一个获取对象的方法,并检查该对象是否是存储为实例变量的类的实例.到目前为止没问题.

但是在测试中我必须使用模拟,其中一个模拟是传递给该方法的对象.而现在,它变得棘手.让我们看看代码(我总结了这个测试中的代码):

    Class<AdapterEvent> clazz = AdapterEvent.class;
    AdapterEvent adapterEvent = Mockito.mock(AdapterEvent.class);

    Assert.assertTrue(adapterEvent.getClass().equals(clazz));
    Assert.assertTrue(adapterEvent.getClass().isAssignableFrom(clazz));
Run Code Online (Sandbox Code Playgroud)

好吧,这个测试实际上失败了.有谁知道为什么?有人知道如何通过在测试中使用模拟来解决这个问题吗?是否有其他方法可以将对象与特定类进行比较.

非常感谢你的帮助.

最好的祝福

赫拉尔

mil*_*use 8

你的第一个断言永远不会成真--Mockito嘲笑是一个全新的类,所以一个简单的东西equals()永远不会起作用.顺便说一下,对于这样的测试,如果你使用的话Assert.assertEquals(),你会得到一个更有用的失败信息,其中第一个参数是预期的结果; 例如:

Assert.assertEquals(clazz, adapterEvent.getClass()); 
Run Code Online (Sandbox Code Playgroud)

你的第二个断言是正确的,但你已经混在一起的方向isAssignableFrom()(很容易做到,JavaDoc中是强大的混乱) -翻转过来,它和你的黄金:

Assert.assertTrue(clazz.isAssignableFrom(adapterEvent.getClass()));
Run Code Online (Sandbox Code Playgroud)


mam*_*ing 3

我认为 instanceof 会按照您想要的方式工作:

Assert.assertTrue(adapterEvent instanceof AdapterEvent);
Run Code Online (Sandbox Code Playgroud)

您确定您应该对此进行测试吗?不知道你想要完成什么,很难说,但我认为这个测试可能没有必要。