如何为未导出的函数编写单元测试?

Adr*_*rie 6 unit-testing module julia

我有一个模块,我正在编写与travis.ci一起运行的单元测试.

在我的模块中,我对Web服务执行HTTP POST操作.

我内部唯一的功能之一validate_http_response()是我正在创建的用于包装Web服务调用的函数的组成部分,因此我想测试它.但是,因为没有这样export validate_http_response的功能不能被我的测试脚本"看到",我得到错误:

validate_http_response not defined
Run Code Online (Sandbox Code Playgroud)

我应该如何构建我的测试,以便我不必将内部函数复制并粘贴到测试本身(其中有一些)?我想防止同时维护srctest脚本.



编辑除了接受的答案,我还发现我可以在测试脚本的开头执行以下操作:include("../src/myfunctions.jl")因为我在每个文件中都有一个单独的测试脚本src.

小智 9

再次,查看有关模块的文档,以更好地了解命名空间的工作原理.Julia中没有强制可见性,因此您可以通过完全限定引用来访问任何模块中的函数,导出或未导出.因此,在您的情况下,如果您的模块已命名HTTP,您可以说HTTP.validate_http_response要访问未导出的函数进行测试.