我试图在一个有文化的程序中使用org-babel进行简单的单元测试。
我的想法是我定义一个函数的主体,就像这样
#+NAME: square
#+BEGIN_SRC js :var x=0
return x*x;
#+END_SRC
当然,我还需要实际创建一个纠结功能,我可以通过
来完成#+BEGIN_SRC js :noweb tangle :tangle the-script.js
function square(x) {
<<square>>
}
#+END_SRC
然后我会设置一个测试值表,如此
#+TBLNAME: squares-test-data
| the square of | is |
|---------------+---------|
| 0 | 0 |
| 1 | 1 |
| 10 | 100 |
| 12 | 144 |
| 4 | 16 |
| 9 | 81 |
| 100 | 10000 |
| 234 | 8273424 |
问题是,如何使用此数据从单独的块对函数体运行测试,请记住
基本上,我想做的是这样的事情:
#+BEGIN_SRC js :var table=squares-test-data
// Import square block here somehow?
return table.map(function(row) {
var input = row[0],
expected = row[1],
got = square(input), // this won't be defined
passed = got == expected;
return [input, expected, passed]
});
#+END_SRC
但是这个区块并不知道&#34;另一个街区。
有什么想法吗?
答案 0 :(得分:0)
这主要是一个简单的疏忽。
你可以&#34;导入&#34;在评估之前以这种方式阻塞到其他块:
#+BEGIN_SRC js :noweb eval
<<code-under-test>>
// run some tests
#+END_SRC
我习惯于使用:noweb tangle
我没有意识到还有其他选择。 :noweb eval
确保在评估之前纠结块,这就是我想要的。
也就是说,在大多数情况下,我确实发现组织表不能作为输入源,但是我有一个令人满意的替代方案,我已经写过并且会链接到这里帐。