Macros 是否有在Clojure中测试宏的策略?
我通常会制作函数,并为它们编写单元测试。 但对于进行代码转换的宏,如何应用macthing预期值和实际值的逻辑呢 因为宏的输入是代码,输出也是代码。这对我来说是如此的有活力,以至于我能够想出一些策略来进行测试Macros 是否有在Clojure中测试宏的策略?,macros,clojure,Macros,Clojure,我通常会制作函数,并为它们编写单元测试。 但对于进行代码转换的宏,如何应用macthing预期值和实际值的逻辑呢 因为宏的输入是代码,输出也是代码。这对我来说是如此的有活力,以至于我能够想出一些策略来进行测试 或者我可以为宏使用一个示例输入,并将表达式传递给macroexpand-1,并将输出与预期的输出匹配?我认为这两个示例都有优点 对于小型替换样式宏,可以测试几个示例的扩展形式。像Midje这样的测试框架有助于实现这一点 但对于更复杂的示例,扩展表单通常在开发过程中以很小的方式快速变化,这使
或者我可以为宏使用一个示例输入,并将表达式传递给macroexpand-1,并将输出与预期的输出匹配?我认为这两个示例都有优点 对于小型替换样式宏,可以测试几个示例的扩展形式。像Midje这样的测试框架有助于实现这一点 但对于更复杂的示例,扩展表单通常在开发过程中以很小的方式快速变化,这使得检查扩展表单变得非常脆弱。在这些示例中,我通常围绕宏的特定用途创建测试用例。这是: 或者我可以使用宏的示例输入,并将表达式传递给 macroexpand-1并将输出与预期输出匹配 无论如何,您应该通过编写预期的输出来开始编写宏,因此您应该已经有了一个可用的示例
您还可以测试宏生成的代码,并验证它是否也按预期运行,就像测试函数一样。我在这里回答了一个非常类似的问题:-希望有帮助。