2015-09-03 37 views
3

假设我想构建一个Vector库。它有一个Vector结构体:如何在不暴露访问器的情况下单元测试结构

(struct vector (x y z)) 

现在我想为测试模块中的矢量模块编写单元测试。 进行测试我需要访问x y和z。但我不想公开vector-{xyz}。有没有办法为单元测试提供访问器?

+0

Make test a submodule(in the same file)? [不确定这是否是你之后的] – soegaard

回答

3

事实上,我找到了一个方法来隐藏的东西用submodule

;; vector.rkt 
(struct vector (x y z)) 

(module* private-test #f 
      (provide vector-x vector-y vector-z)) 

然后我可以要求私有测试仅用于测试目的。

;; test.rkt 
(require (submod "vector.rkt" private-test) 
+0

注意:'(module + foo body ...)'和'(module * foo #f body ...)'是一样的,如果你命名你的测试子模块'test' ,'raco test'工具*自动*运行它,所以你可以把所有的测试代码放到测试子模块中。 – Jack

+0

@Jack谢谢你的提示。但我想把所有的测试都放在其他文件中。 – mathk

相关问题