2020 年发布的 testthat 3.0.0 中加入了快照测试的支持,默认的快照输出路径 tests/testthat/_snaps/
是硬编码在逻辑中无法更改的,也没有提供修改的接口。
这个固定输出路径的设计在大多数标准的 R package 语境下是没问题的,但如果用 R package 的形式组织项目,在某些情况下快照类输出必须放到项目以外的其他路径而不能放在 package 中,这时无法修改快照的输出路径就会成为一个巨大的问题。
但幸运的是,我最近意识到可以直接在 testthat helper file 中写一个猴子补丁,在运行时修改 testthat 内部函数,从而实现对这个路径的定制,几行代码完美解决问题:https://nanx.me/blog/post/testthat-snapshot-monkey-patch/