在node.js中编写同步函数的简单方法

时间:2013-08-21 09:06:49

标签: javascript node.js coffeescript tdd

出于测试目的,如果我能够执行一些等待其结果同步的测试函数,我的代码看起来会更好。

我知道有关node.js中事件编程的主要想法,但是在同步运行的测试期间阻塞处理器对我来说不是问题。

是否有任何简单的(单线程最好)解决方案来执行函数,该函数通过回调(err,ret)返回一些值以通过“return”返回ret,并假装执行是同步的。

2 个答案:

答案 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);
     });

   });
});