出于测试目的,如果我能够执行一些等待其结果同步的测试函数,我的代码看起来会更好。
我知道有关node.js中事件编程的主要想法,但是在同步运行的测试期间阻塞处理器对我来说不是问题。
是否有任何简单的(单线程最好)解决方案来执行函数,该函数通过回调(err,ret)返回一些值以通过“return”返回ret,并假装执行是同步的。
答案 0 :(得分:5)
您可以将节点同步用于此目的https://github.com/0ctave/node-sync
但总的来说,我建议你不要。例如,mocha测试框架允许您进行异步测试。此外,异步瀑布https://github.com/caolan/async#waterfall是一种伪同步代码的好方法。
我会说留在异步思维框架中。即使在测试时也是如此。
答案 1 :(得分:0)
Mocha内置done
回调函数来实现这一目标。我用于代码的模式:
describe('some spec', function () {
beforeEach(function (done) {
// common spec initalization code..
common.init (function (err, stuff) {
done(err);
});
});
describe('particular case', function () {
var result, another;
beforeEach(function (done) {
// case init 1..
case.init(function (err, res) {
result = res;
done(err);
});
});
beforeEach(function (done) {
// case init 2..
case.init2(function (err, res) {
another = res;
done(err);
});
});
it ('should be smth', function () {
expect(result).to.equal(0);
});
it ('should be smth else', function () {
expect(another).to.equal(1);
});
});
});