Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 在Clojure中与测试共享的定义_Unit Testing_Clojure - Fatal编程技术网

Unit testing 在Clojure中与测试共享的定义

Unit testing 在Clojure中与测试共享的定义,unit-testing,clojure,Unit Testing,Clojure,我正在努力了解如何在与test一起使用时定义用于多个测试的值。我想做的是: (with-test (defn myfunction [arg...] (code to test)) (let [a (something-complex ...) b (something-else ...)] (is (= '(...) (myfunction a ....))) (is (= '(...) (myfunction a b ..))) (

我正在努力了解如何在与test一起使用时定义用于多个测试的值。我想做的是:

(with-test

  (defn myfunction [arg...]
    (code to test))

  (let [a (something-complex ...)
        b (something-else ...)]
    (is (= '(...) (myfunction a ....)))
    (is (= '(...) (myfunction a b ..)))
    (is (= '(...) (myfunction b ....))))
其中,我定义了
a
b
一次,但在多个测试中使用它们(多个断言;这可能是一个单一的测试-即使我不清楚)


请-我该怎么做?

您的假设是正确的,在使用test对
进行定义之后的代码体将像Clojure代码的任何正常体一样进行评估,因此您可以使用类似
let
的构造


一个很好的技巧是使用
macroexpand
查看宏生成的代码,如
with test
。你对这件事的信任程度很难确定。我想说的是,你应该用你的常识来找出你正在使用的宏的实际用途。宏是强大的工具,通常使用宏和依赖实现细节之间的界限比函数更模糊。在这种情况下,通过查看参数列表,您应该对test的
行为非常有信心,最后一个参数,即
body
,意味着它接受任意数量的形式,就像函数体、
let
do
一样,类似的代码有什么问题吗?提示:使用macroexpand查看通过测试
生成的代码。哦!好的,谢谢-明天我就要考试了。现在需要睡觉…很好。如果你想在下面贴出答案,我会给你投票。还有,你能相信多少?如果我需要使用macroexpand来确定我是否依赖于实现细节?谢谢