参数化要求

时间:2016-02-09 18:55:53

标签: racket

我正在开展一个项目,在这个项目中,我有一组常见的测试,以及一系列正在测试的系统的各种潜在实现。我希望能够通过实现参数化测试模块。

基本上,我有类似的东西:

(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))

但我不知道该怎么做。

1 个答案:

答案 0 :(得分:3)

所以,这里快速而肮脏的答案是你想要dynamic-require

鉴于上面的模块foobar,您可以执行以下操作:

(module test racket
    (define dummy-function (if <condition>
                               (dynamic-require 'foo 'dummy-function)
                               (dynamic-require 'bar 'dummy-function)))
    (test-function (dummy-function) 4))

请注意,如果未全局安装foobar,您可能希望它们是字符串"foo.rkt""bar.rkt"

可能更强大的解决方案是使用units,但这需要更多努力。

相关问题