我怎样才能EasyMock演员表演?

时间:2010-09-07 19:17:39

标签: java easymock

如何模拟演员操作? 我对依赖对象进行了强制转换操作,它将转换为另一个依赖对象,如

SqlMapClient sqlMapClient;
SqlMapClientImpl sqlMapClientImpl = (SqlMapClientImpl) sqlMapClient 

我正在嘲笑两个依赖的咒语,即SqlMapClientSqlMapClientImpl。但我需要知道如何使用EasyMock进行模拟。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:4)

你不能模拟强制转换,因为强制转换不会导致对象的方法调用。

相反,使用EasyMock类扩展模拟SqlMapClientImpl类,并将对该模拟的引用传递给接受SqlMapClientSqlMapClientImpl

的类

但是,请注意,在代码中进行向下转换是一种代码味道。如果您的生产代码正在执行向实现类的接口的向下转换,那么您将失去使用接口的所有灵活性。它实际上可能比不使用接口更糟糕,因为它看起来像你的类依赖于接口,因此可以用于任何实现,但实际上你的类依赖于一个特定的实现。

答案 1 :(得分:0)

我们无法强制转换的原因是Easy Mock将动态创建一个类,它将实现SqlMapClient类,它没有任何有关Implementation类(SqlMapClientImpl)的信息,所以一个廉价的技巧可以创建一个实现SqlMapClient接口并扩展可能有效的SqlMapClientImpl类。