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

时间:2014-10-29 10:40:30

标签: unit-testing module julia

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

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

我内部唯一的一个功能validate_http_response()是我创建的用于回放Web服务调用的功能的组成部分,所以我想测试它。但是,由于没有这样的export validate_http_response功能,因此无法看到""通过我的测试脚本,我得到错误:

validate_http_response not defined

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



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

2 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:0)

有两个解决方案:

  1. 导出功能。
  2. 创建一个包含HTTP请求验证代码的新模块。将功能移到那里。现在它是官方/公共API的一部分,可以独立测试。
  3. 第一个解决方案很简单但是会破坏你的API。第二个是干净但可能需要做很多工作。