【问题标题】:Unit Testing Express Application单元测试快速应用程序
【发布时间】:2014-04-02 07:56:44
【问题描述】:

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

有没有办法将路由拆分为可测试的方法,这些方法返回 .json 数据以由实际呈现:

app.get('/route', function(req, res, next) {
  res.render('template', {
    data: data
  });
});

在我阅读的所有内容中,他们正在测试 JSON 输出,因为他们以 RESTful 方式设计了他们的应用程序,而这些入门教程中的大多数都是在服务器上完全模板化/呈现的(我认为这还不错),返回html给客户端。但是,这是我不明白的部分如何分离和测试。

接下来是学习主干,所以应用程序只是折腾 JSON,但现在,有什么建议或完整教程的链接

非常感谢。

【问题讨论】:

  • 请问您找到这个问题的答案了吗?

标签: node.js unit-testing express pug


【解决方案1】:

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

  • 您可以分隔标准站点或/api/.. 之间的路由以获取 JSON 响应
  • 您可以通过检查 req.accepts req.accepts 来检测请求接受的内容,以确定请求接受的内容并输出 json 或呈现 html..
  • 您可以编写一个执行上述检查的输出中间件,但中间件堆栈中的中间件应调用next() 并传递req.responseData 并相应地处理req.responseData JSON,无论是渲染还是输出..

为了测试,我推荐这个模块https://github.com/visionmedia/superagent 传递accept 标头或查询正确的url,但JSON 输出将允许您在不使用html 解析器解析HTML 的情况下测试您的api。如果您想测试 HTML 的呈现方式,请使用 cheerio 或 phantomjs,但我会尽量避免这种情况。

至于主干,周围有很多教程,http://backbonejs.org/ 是你的起点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-12
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 2017-08-05
    相关资源
    最近更新 更多