2012-05-13 84 views
2

採用摩卡+ tamejs見我的測試代碼: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不會等待異步調用。