在OCaml中进行双重测试

hyp*_*ean 6 ocaml unit-testing

通常在OCaml中使用双重测试可以伪造数据库连接?

假设您想在数据库之上测试一个小API,其工作方式是为ConnectionAPI公开的每个函数提供一个类型.

就像是:

let get_data connection = do_something_with_connection
Run Code Online (Sandbox Code Playgroud)

如何进行单元测试?

考虑到OCaml强大的类型系统已经确保你不会犯奇怪的错误这一事实,在OCaml中通常会进行这种测试吗?

Kei*_*win 3

您将创建一个对象,该对象具有与 Connection 相同的所有方法名称,每个方法名称都具有相同的签名(显然,并且具有存根功能)。然后,您可以实例化这些对象之一,并通过子类型将其声明为 Connection。然后它可以被传递到任何函数中。

这里有一些关于子类型的有用信息(应该注意的是,这与 Ocaml 中的继承不同)。