Тамейс не может работать с мокко?
Посмотрите мой тестовый код, используя 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, чтобы определить, закончился ли асинхронный вызов или нет. Без этого мокко не будет ждать асинхронного вызова.