【问题标题】:How to write test driven programming in node.js?如何在 node.js 中编写测试驱动编程?
【发布时间】:2013-03-21 06:43:03
【问题描述】:

最近我接触到了 node.js 和 express、mongodb 和 ejs 等包。我有几个问题:

出于学习目的,我创建了一个github repo of user management,它使用了 express、mongodb 和 ejs。我的所有功能都在routes/users.js 文件中。我需要编写所有这些功能的测试用例。如何用这个例子创建一个测试驱动的编程?

在我的routesapp.js 文件中。

app.get('/login', user.login);
app.post('/login', user.loginSubmit);

我需要为登录页面渲染和提交等编写不同的路由。如果还有一些 ajax 请求,那么在考虑单个页面的路由时,app.js 文件中有很多路由。是这样还是需要改变我的结构?

【问题讨论】:

  • 快递不是与测试捆绑在一起的吗?你可以看看 repo 看看是否有一些你可以使用或回收的测试工具。
  • @mpm 如何在 express 中运行测试?在快速测试中,有一些功能describetest 等。从哪里可以找到这些函数的文档和用法?
  • 寻找摩卡或茉莉,但我猜快递创作者使用了摩卡,因为他也创造了它。
  • 你可以试试vows

标签: javascript node.js routes express serverside-javascript


【解决方案1】:

我推荐你Mocha,它来自 expressjs 的同一个人。 它支持你的代码的测试覆盖率,钩子之前,之后,每个,当然它支持异步代码。

我将它与 should.js 甚至 chai.js 结合使用

mocha 中的测试看起来像,代码来自我自己的测试,我使用 superagent 来发出请求。

it('requests a permission with valid ticket', function (done){
        agent
            .post(route.server + '/preq')
            .set('Content-Type', 'application/json')
            .set('Authorization', 'Bearer ' + ACCESSTOKEN)
            .send({ticket: TICKET})
            .end(function (req,res) {

                res.should.have.property('statusCode').that.equals(201);
                var location = .....
                res.headers.should.have.property('location').that.is.equal(location);
                done();
            });
    })

【讨论】:

  • 您能否展示一个 mocha 与我的 registerUser 函数集成的示例?
  • 我已经通过npm install mocha 安装了mocha 并创建了一个文件test/test.js。我已经将所有代码从 gist 复制到 test.js 并尝试在 root 中使用命令 make test,但在 shell 中收到一条消息为 make: Nothing to be done for `test'. 并且当以 root 身份使用 test 文件夹输入相同的命令时会给出另一条消息 make: *** No rule to make target `test'. Stop.我们如何运行测试文件?
  • 您可以从 Makefile 或 npm 脚本变量执行,但最简单的方法是 mocha test/ -R spec
  • 我已将要点示例中的 post(route.signup) 更改为 post(route.registerUser)var route = require('../routes/users') 已定义。每次我收到⤠â 1 of 3 tests failed: 1) testing user "before all" hook: Error: timeout of 2000ms exceeded at null.<anonymous> (/home/justin/www/NodeUserManagement/node_modules/mocha/lib/runnable.js:167:14) at Timer.list.ontimeout (timers.js:100:19) at process._makeCallback (node.js:248:20) make: *** [test] Error 1 的错误时如何纠正这个错误?
猜你喜欢
  • 1970-01-01
  • 2010-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-18
相关资源
最近更新 更多