2013-04-30 73 views
0

我正在学习节点和摩卡,并在下面进行了测试(生产代码增加了数据库中的字段)。使用摩卡和嵌套回调测试节点服务器

要查看它是否正常工作,请在调用/ events之前和之后输出此字段的值(请参阅两个console.log语句)。

目前,两种情况下的输出值均为1。在测试之外,代码工作正常,字段递增。

我怀疑它与我的测试代码中的回调有关(因为我仍然在学习如何正确编写和测试节点代码,这几乎肯定是这种情况)。

希望有人能够发现问题。这个测试的生产代码是here(gist)。

it('"processed" event increases processed count', function(done) { 
    Edm.find({campaignguid: '1234'}).success(function(edm) { 
    edmProcessedCount = edm.processed; 
    console.log("pre: " + edmProcessedCount); // result is 1 

    request.post('http://localhost:3001/events?campaignguid=1234&event=processed', function(err, res, body) { 
     Edm.find({campaignguid: '1234'}).success(function(edmm) { 
     console.log("post : " + edmm.processed); // result is 1 (should be 2) 
     done(); 
     }); 
    }) 

    }); 
}); 
+0

你交看起来不错,除了不检查代码'err',看看'请求期间发生的错误.POST()'。它可能与你的'/ events'处理程序的实现有关,所以也可以发布它。 – robertklep 2013-04-30 10:42:36

+0

我认为你必须显示Edm.find的代码,因为edm和edmm参数只是2个独立的变量。目前代码中没有任何内容暗示它们是相同的,并且是一个计数器。 – AndyD 2013-04-30 10:43:01

+0

@AndyD'Edm.find'是一个Sequelize构造('Edm'是模型,'find'是查询数据库的方法)。 – robertklep 2013-04-30 10:45:47

回答

1

你在摩卡测试用例查询缺少一个where条款:

Edm.find({ where : { campaignguid: '1234' }}) 
      ^^^^^