循环摩卡测试?

时间:2012-07-06 23:06:20

标签: node.js mocha

我正在尝试循环一个mocha测试套件(我想针对预期结果的无数值来测试我的系统),但我无法让它工作。例如:

规格/ example_spec.coffee

test_values = ["one", "two", "three"]

for value in test_values
  describe "TestSuite", ->
    it "does some test", ->
      console.log value
      true.should.be.ok

问题是我的控制台日志输出如下所示:

three
three
three

我希望它看起来像这样:

one
two
three

如何为我的mocha测试循环这些值?

2 个答案:

答案 0 :(得分:13)

这里的问题是你正在关闭“value”变量,所以它总是会评估它的最后一个值。

这样的事情会起作用:

test_values = ["one", "two", "three"]
for value in test_values
  do (value) ->
    describe "TestSuite", ->
      it "does some test", ->
        console.log value
        true.should.be.ok

这是有效的,因为当将值传递给此匿名函数时,它将被复制到外部函数中的新值参数,因此不会被循环更改。

编辑:添加了coffeescript“do”niceness。

答案 1 :(得分:2)

您可以使用'数据驱动'。 https://github.com/fluentsoftware/data-driven

var data_driven = require('data-driven');
describe('Array', function() {
  describe('#indexOf()', function(){
        data_driven([{value: 0},{value: 5},{value: -2}], function() {
            it('should return -1 when the value is not present when searching for {value}', function(ctx){
                assert.equal(-1, [1,2,3].indexOf(ctx.value));
            })
        })
    })
})