我最近为Thymeleaf编写了一个自定义方言以及一个自定义处理器来处理一些自定义标签,并在某些情况下用不同的标签替换它们,但我在为处理器编写测试时遇到了问题:
AbstractProcessor
类需要覆盖
protected ProcessorResult doProcess(Arguments arguments, ProcessorMatchingContext processorMatchingContext, Node node)
方法,这是我需要测试的方法。
由于我的处理器涉及从arguments
参数中获取变量,因此我尝试模拟它;但是,Arguments
,ProcessorMatchingContext
和Node
类都被宣布为final,这意味着它们不能被Mockito嘲笑。
我真的不想实例化一个实际的Arguments
对象,因为它取决于其他5个无法模拟的对象,我最终会编写大量代码来测试处理器中的一行
有关可能的测试策略的任何想法吗?
答案 0 :(得分:0)
我不知道这是否会有所帮助,但您可以使用Objenesis
实例化一个实际的(非模拟的)参数,而不需要所有其他5个依赖类。答案 1 :(得分:0)
你试过mockito.when().thenReturn()
如果您的参数正在进行任何类型的调用,您需要先模拟它,然后您可以轻松测试方法。