1

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

测试.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 函数。我正在尝试为此功能创建一个测试用例。

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

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

我是否需要更改实际功能registerUser才能获得此功能?如果是这样,我怎样才能做到这一点?

4

1 回答 1

0

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

  • err(可能的错误返回)
  • res (HTTPRequest 对象)
  • 正文(结果正文的缓冲区)

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

于 2013-04-04T15:27:22.937 回答