我有SomeBigFlow
调用其中的多个子流,即ValidateFlowA
,ValidateFlowB
。假设A和B必须启动流而不是函数。
当我在Junit中运行ValidateFlowA
时,如何模拟SomeBigFlow
的返回值?
我已经看到一些使用registerAnswer
来模拟流'返回值here的引用。我也很好奇为什么这个函数仅适用于InternalMockNetwork.MockNode
但不适用于MockNetwork.StartedMockNode
,这通常在junit测试期间使用)
我以为我可以通过node[1].registerAnswer(ValidateFlowA.class, 20)
来复制它。但是当我运行node[1].startFlow(SomeBigFlow).resultFuture.getOrThrow()
时,ValidateFlowA
仍在使用其默认的call
实现,而不是返回模拟的20整数值。也许我错了。
关于如何使这项工作的任何指针或是否有实现模拟内联子流返回值的解决方案?我能想到的唯一另一种方法是有一个经验法则,即每当调用内联子流时,将它们放在可以在模拟网络测试期间被覆盖的open fun
中 - 这使内联子流变得乏味,希望有一种更简洁的方式。
答案 0 :(得分:0)
目前,您必须使用与此处列出的方法类似的方法:Corda with mockito_kotlin for unit test。
总结:
FlowLogic
班级open
,并将调用的子流程移至open
方法open
FlowLogic
类的子类,覆盖open
方法以返回虚拟结果