出于测试目的,如果我能够执行一些同步等待结果的测试函数,我的代码会看起来更好。
我知道关于 node.js 中事件编程的主要思想,但是在同步运行的测试期间阻塞处理器对我来说不是问题。
是否有任何简单(单线最好)的解决方案来执行函数,该函数通过回调(err,ret)返回一些值以通过“return”返回该 ret,并假装执行是同步的。
出于测试目的,如果我能够执行一些同步等待结果的测试函数,我的代码会看起来更好。
我知道关于 node.js 中事件编程的主要思想,但是在同步运行的测试期间阻塞处理器对我来说不是问题。
是否有任何简单(单线最好)的解决方案来执行函数,该函数通过回调(err,ret)返回一些值以通过“return”返回该 ret,并假装执行是同步的。
您可以为此目的使用节点同步https://github.com/0ctave/node-sync
但总的来说,我建议你不要。例如,mocha 测试框架允许您进行异步测试。异步瀑布https://github.com/caolan/async#waterfall也是伪同步代码的好方法。
我会说留在异步思维框架中。即使在测试时。
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);
});
});
});