我正在尝试循环一个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测试循环这些值?
答案 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));
})
})
})
})