如何在摩卡框架中纠正这个测试案例?
我正在尝试为使用摩卡作为测试框架的节点应用程序编写测试用例。如何在摩卡框架中纠正这个测试案例?
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: '[email protected]'
}}, 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
才能得到这个吗?如果是这样,我该如何做到这一点?
当这样做的HTTP请求,回调函数调用与三个参数:
- ERR(可能的错误返回)
- RES(HttpRequest对象)
- 体(所得体的缓冲液)
因此,regErr在体变量中。而且由于你正在渲染一个HTML页面,你必须自己解析身体才能找到它。一个可能的解决方案是呈现JSON并在生成的主体缓冲区上使用JSON.parse()。
如何解析body变量? body变量包含页面的整个html元素。如果我需要传递JSON,那么我需要发送响应'res.json({..})'。那么我怎样才能渲染页面中的所有html元素? – 2013-04-05 11:08:11
@JustinJohn:你可以用正则表达式来解析它,但更理想的选择是用“单元测试”模式启动服务器时用res.json替换res.render。 – red 2013-04-05 13:55:41
您是否尝试过记录e,res和body?我从来没有使用请求,但我认为这通常设置在e.body或其他东西。 – kimpettersen 2013-04-04 14:33:10