我正在测试一个方法,它获取一个对象,并检查该对象是否是一个类的示例,该示例是作为示例变量存储的。
但是在测试中我必须使用mock,而其中一个mock就是传递给那个方法的对象。现在,这就变得棘手了。让我们看看代码(我在这个测试中总结了代码):
Class<AdapterEvent> clazz = AdapterEvent.class;
AdapterEvent adapterEvent = Mockito.mock(AdapterEvent.class);
Assert.assertTrue(adapterEvent.getClass().equals(clazz));
Assert.assertTrue(adapterEvent.getClass().isAssignableFrom(clazz));
这个测试实际上失败了。有人知道为什么吗?有人知道我怎么解决这个问题吗?在测试中仍然使用一个mock?有没有可能有其他的方法来比较对象和一个特定的类。
5条答案
按热度按时间bwntbbo31#
您的第一个Assert * 永远 * 不会为真- Mockito模拟是一个全新的类,因此简单的
equals()
永远不会起作用。例如:您的第二个Assert * 应该 * 是正确的,但是您混淆了
isAssignableFrom()
的方向(很容易做到,JavaDoc非常令人困惑)--将其颠倒过来,您就成功了:ncgqoxb02#
我认为instanceof会按照您希望方式工作:
你确定你应该为此进行测试吗?不知道你想完成什么,这很难说,但我认为这个测试可能没有必要。
rekjcdws3#
在Mockito 2.0.0中有一个新的方法getMockedType,它返回最初传入
Mockito.mock(Class)
的类。我建议使用这个方法,因为getSuperClass()
技术并不是在所有情况下都有效。s5a0g9ez4#
若要测试一个对象是否返回了C#中您所期望的类的示例,请执行以下操作
tuwxkamq5#
Mocked类是原始类的子类,因此只需检查超类,如下所示:
如果是这样的话,那么就可以使用以下方法: