我怎样才能EasyMock演员阵容?

我怎样才能嘲笑演员阵容。 我在一个依赖对象上执行了一个强制操作,该操作将转换为另一个依赖对象

SqlMapClient sqlMapClient;
SqlMapClientImpl sqlMapClientImpl = (SqlMapClientImpl) sqlMapClient 

我嘲笑从属的clesses,即SqlMapClientSqlMapClientImpl 。但我需要知道如何使用EasyMock模拟投射。

任何帮助,将不胜感激。


你不能嘲讽一个强制转换,因为强制转换不会导致该对象的方法调用。

相反,使用EasyMock Class Extension来模拟SqlMapClientImpl类,并将该模拟的引用传递给将SqlMapClientSqlMapClientImpl

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


我们无法投射的原因是Easy Mock会动态地创建一个实现SqlMapClient类的类,并且它没有关于Implementation类(SqlMapClientImpl)的任何信息,因此一个便宜的技巧可能是创建一个实现SqlMapClient接口的类和扩展这可能工作的SqlMapClientImpl类。

链接地址: http://www.djcxy.com/p/47745.html

上一篇: How can I EasyMock the cast operation?

下一篇: How to verify normal termination of R scripts executed from Perl?