我正在使用 Eliom 构建一个新项目,并且在使用 OUnit 为单元测试设置编译过程时遇到了麻烦。
我有两个文件:
Js_Client_Code.eliom - contains all of the client side code
Project.eliom - contains all of the server side code (including opening Js_Client_Code.eliom)
我以这种方式设置了文件,这样我就可以在 Js_Client_Code.eliom 上运行单元测试,而无需使用ocsigenserver
.
这是我当前的测试生成文件:
test: prep unit_tests
prep:
eliomc -infer Js_Client_Code.eliom
js_of_eliom -linkall -a Js_Client_Code.eliom -o file_a.cma
eliomc -a -linkall Js_Client_Code.eliom -o file_b.cma
# Code is here to move the cma files back to the parent directory, since they are written to _client/ and _server/ by default
unit_tests:
ocamlfind ocamlc -thread -syntax camlp4o -package ounit,js_of_ocaml.syntax \
-linkpkg -g -o UnitTests file_a.cma file_b.cma unit_tests.ml
make test
在 shell 中运行会产生
File "unit_tests.ml", line 1:
Error: Error while linking file_a.cma(Js_Client_Code):
Reference to undefined global `Eliom_client'
我是否误解了 Eliom/Js_of_ocaml 编译过程,或者只是以错误的方式解决这个问题?