Тамейс не может работать с мокко?

Посмотрите мой тестовый код, используя mocha + tamejs:

тест /t.tjs

require('should');

function inc(n, callback) {
  setTimeout(function() {
    console.log('### inc: ' + n);
    callback(n+1);
  }, 1000);
};

describe('test', function(){
  it('show ok with tamejs', function(){
     console.log('### testing ...');
     var result;
     await { inc(1, defer(result)); }
     console.log('result: ' + result);
     result.should.equal(123456); // won't pass
  });
});

Скомпилируйте его в t.js:

tamejs -o test/t.js test/t.tjs

Запустить мокко

mocha

Результат:

### testing ...
.

✔ 1 test complete (1ms)    

Кажется inc метод никогда не вызывался.

1 ответ

Решение

Проблема в том, что я не правильно использовал мокко.

Это должно быть написано как:

describe('test', function(){
  it('show ok with tamejs', function(done){
     console.log('### testing ...');
     var result;
     await { inc(1, defer(result)); }
     console.log('result: ' + result);
     result.should.equal(123456); // won't pass
     done();
  });
});

Пожалуйста, обратите внимание done, он используется в mocha, чтобы определить, закончился ли асинхронный вызов или нет. Без этого мокко не будет ждать асинхронного вызова.

Другие вопросы по тегам