在pig脚本中,我使用javaudfs处理生产数据。我想用模拟的udf类覆盖它,在那里我将有我的虚拟实现。我的pig脚本中有define语句,用于定义特定javaudf类的调用。我可以重写pigunit中的define语句以使其调用mock类吗?
DEFINE InvokeActual mypackage.function.ActualFunction();
应替换为
DEFINE InvokeActual mypackage.function.TestFunction();
如果这是可能的话,它可以解决我在单元测试pig脚本时遇到的大部分问题。
1条答案
按热度按时间nbewdwxp1#
我看到两种情况:
我会尝试导出define方法来分离脚本,并使用导入宏。然后您可以在单元测试或实际使用时更改定义。
您可以使用相同的方法创建mock jar。
一个明显的问题是,如果您重复define invokeactual,那么到java方法的Map将被覆盖,但我猜您不希望有单独的pig脚本进行测试。