Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 单元测试快速应用程序_Node.js_Unit Testing_Express_Pug - Fatal编程技术网

Node.js 单元测试快速应用程序

Node.js 单元测试快速应用程序,node.js,unit-testing,express,pug,Node.js,Unit Testing,Express,Pug,目前正在尝试学习如何为Express应用程序编写单元测试(不是集成测试/PhantomJS) 是否有一种方法可以将路由拆分为可测试的方法,这些方法返回.json数据,由实际用户呈现: app.get('/route', function(req, res, next) { res.render('template', { data: data }); }); 在我读到的所有内容中,他们都在测试JSON输出,因为他们以RESTful的方式设计应用程序,而这些入门教程中的大多数都是

目前正在尝试学习如何为Express应用程序编写单元测试(不是集成测试/PhantomJS)

是否有一种方法可以将路由拆分为可测试的方法,这些方法返回.json数据,由实际用户呈现:

app.get('/route', function(req, res, next) {
  res.render('template', {
    data: data
  });
});
在我读到的所有内容中,他们都在测试JSON输出,因为他们以RESTful的方式设计应用程序,而这些入门教程中的大多数都是在服务器上完全模板化/呈现的(我认为这并不坏),将html返回给客户端。但是,这是我不理解的部分,如何分离和测试。

下一步是学习主干,因此应用程序只是抛出JSON,但就目前而言,是否有任何建议或完整教程的链接


非常感谢。

有几种方法可以解决这个问题

  • 您可以分离标准站点或JSON响应的
    /api/.
    之间的路由
  • 您可以通过检查
    req.accepts
    来检测请求接受什么,以确定请求接受什么并输出json或呈现html
  • 您可以编写一个执行上述检查的输出中间件,但中间件堆栈中之前的中间件应该调用
    next()
    并传递
    req.responseData
    并相应地处理
    req.responseData
    JSON,呈现或输出
对于测试,我建议此模块传递
accept
标题或查询正确的url,但JSON输出将允许您测试api,而无需使用html解析器来解析html。如果您想测试HTML的呈现方式,可以使用
cheerio
或phantomjs,但我会尽量避免


至于主干,有很多教程,这是你的起点。

你找到这个问题的答案了吗?