Тесты 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));
            })
        })
    })
})