Тесты Loop 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
Как я могу перебирать эти значения для моих мокко-тестов?
Ответы
Ответ 1
Проблема здесь в том, что вы закрываете переменную "значение", и поэтому она всегда будет оценивать ее последнее значение.
Что-то вроде этого будет работать:
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
Это работает, потому что когда значение передается в эту анонимную функцию, оно копируется в новый параметр значения во внешней функции и поэтому не изменяется в цикле.
Изменить: добавлена кофейня "добро".
Ответ 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));
})
})
})
})