Javascript 如何避免nodejs测试中的深层嵌套?
您介意分享一下您在测试NodeJ方面的最佳实践吗 为了避免深嵌套,您有什么经验?在编写测试时,无法找出如何将此代码重构为闭包Javascript 如何避免nodejs测试中的深层嵌套?,javascript,node.js,closures,mocha.js,Javascript,Node.js,Closures,Mocha.js,您介意分享一下您在测试NodeJ方面的最佳实践吗 为了避免深嵌套,您有什么经验?在编写测试时,无法找出如何将此代码重构为闭包 describe('ProcessRawData', function(){ describe('event that has been already handled', function(){ beforeEach(function(done){ store.testMode(true); var filename = __dirn
describe('ProcessRawData', function(){
describe('event that has been already handled', function(){
beforeEach(function(done){
store.testMode(true);
var filename = __dirname + '/data/test.txt';
fs.readFile(filename, 'utf8', function(err, rawData) {
prd.process(rawData, function(err, data){
var rawMsgSha1 = '123464fbcb34c333f4300a88f019f43e7de757d6';
store.sismember('events:handled', rawMsgSha1, function(err, exists){
if (err) throw err;
assert.ok(exists);
done();
});
});
});
})
<>你可以考虑使用一个异步流控制库,这样会使代码看起来像这样(未经测试): 如果(错误)无处不在,则必须编写
,它不会自动传播
describe('ProcessRawData', function(){
describe('event that has been already handled', function(){
beforeEach(function(done){
store.testMode(true);
var filename = __dirname + '/data/test.txt';
Step(
function readFile() {
fs.readFile(filename, 'utf8', this);
},
function processRawData(err, rawData) {
if (err) throw err;
prd.process(rawData, this);
},
function doMoreProcessing(err, data) {
if (err) throw err;
var rawMsgSha1 = '123464fbcb34c333f4300a88f019f43e7de757d6';
store.sismember('events:handled', rawMsgSha1, this);
},
function checkIfExists(err, exists) {
if (err) throw err;
assert.ok(exists);
done();
}
);
});
});
})