如何在mocha框架中更正此测试用例?

时间:2013-04-04 12:33:51

标签: javascript node.js express mocha

我正在尝试为节点应用程序编写测试用例,它使用mocha作为测试框架。

test.js

var register = require('../routes/users');
var request = require('request');
var baseUrl = 'http://localhost:5000';

describe('registerUser()', function() {

    it('check email is already registered', function (done) {
        request.post({uri:baseUrl+'/register', form :{
            username: 'test',
            email: 'test@test.com'
        }}, function (e, res, body) {
            res.should.have.property('statusCode', 201);
            res.should.have.property('regErr', 'This email is already taken!');
        })
    });

})

regErr在渲染时作为函数registerUser中的参数给出。我希望参数regErr将被设置为响应的属性,并且可以进入测试阶段。 请在github中查看我的registerUser function。 我正在尝试为此函数创建一个测试用例。

上面的代码在测试用例中获取的响应中没有名为regErr的属性。

如何更正渲染参数也可以作为响应属性?

我需要更改实际功能registerUser才能获得此功能吗?如果是这样,我怎么能实现这个目标呢?

1 个答案:

答案 0 :(得分:0)

执行HTTP请求时,将使用三个参数调用回调函数:

  • 错误(可能的错误返回)
  • res(HTTPRequest对象)
  • 身体(所得身体的缓冲液)

因此,regErr在body变量中。而且,由于您正在渲染HTML页面,因此您必须自己解析身体才能找到它。一种可能的解决方案是渲染JSON并在生成的主体缓冲区上使用JSON.parse()。