我正在开展一个项目,在这个项目中,我有一组常见的测试,以及一系列正在测试的系统的各种潜在实现。我希望能够通过实现参数化测试模块。
基本上,我有类似的东西:
(module foo racket
(define (dummy-function) 2))
(module bar racket
(define (dummy-function) 4))
然后想要用类似下面的内容进行测试
(module test racket
(require [STUFF])
(test-function (dummy-function) 4))
理想情况下,我可以使用foo和bar参数化测试,例如
(require (test foo))
但我不知道该怎么做。
答案 0 :(得分:3)
所以,这里快速而肮脏的答案是你想要dynamic-require
。
鉴于上面的模块foo
和bar
,您可以执行以下操作:
(module test racket
(define dummy-function (if <condition>
(dynamic-require 'foo 'dummy-function)
(dynamic-require 'bar 'dummy-function)))
(test-function (dummy-function) 4))
请注意,如果未全局安装foo
和bar
,您可能希望它们是字符串"foo.rkt"
和"bar.rkt"
。
可能更强大的解决方案是使用units,但这需要更多努力。