4

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

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

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

4

2 回答 2

5

您可以为此目的使用节点同步https://github.com/0ctave/node-sync

但总的来说,我建议你不要。例如,mocha 测试框架允许您进行异步测试。异步瀑布https://github.com/caolan/async#waterfall也是伪同步代码的好方法。

我会说留在异步思维框架中。即使在测试时。

于 2013-08-21T09:17:51.913 回答
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);
     });

   });
});
于 2013-08-22T07:24:25.543 回答