Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在mocha框架中更正此测试用例?_Javascript_Node.js_Express_Mocha.js - Fatal编程技术网

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

Javascript 如何在mocha框架中更正此测试用例?,javascript,node.js,express,mocha.js,Javascript,Node.js,Express,Mocha.js,我正在尝试为节点应用程序编写测试用例,它使用mocha作为测试框架 test.js regErr在render上的函数registerUser中作为参数提供。我希望parameterregErr将被设置为响应的属性,并且可以在测试中获得。 请在github中查看我的帐户。 我正在尝试为这个函数创建一个测试用例 上述代码在测试用例中获取的响应中没有名为regErr的属性 如何更正,以便渲染参数也可以作为响应属性 我需要改变实际的函数注册器才能得到这个吗?如果是这样,我该如何实现这一点?在执行HTT

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

test.js

regErr在render上的函数registerUser中作为参数提供。我希望parameterregErr将被设置为响应的属性,并且可以在测试中获得。 请在github中查看我的帐户。 我正在尝试为这个函数创建一个测试用例

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

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


我需要改变实际的函数注册器才能得到这个吗?如果是这样,我该如何实现这一点?

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

err可能返回的错误 res-HTTPRequest对象 结果实体的实体缓冲区
因此,regErr在body变量中。由于您要呈现一个HTML页面,您必须自己解析主体才能找到它。一个可能的解决方案是呈现JSON,并在生成的正文缓冲区上使用JSON.parse。

您是否尝试记录e、res和body?我从未使用过request,但我认为这通常是在e.body或其他地方设置的。如何解析body变量?body变量包含页面的整个html元素。如果我需要传递JSON,那么我需要发送response res.JSON{..}。那么如何在页面中呈现整个html元素呢?@JustinJohn:您可以使用正则表达式对其进行解析,但更理想的选择是在单元测试模式下启动服务器时,将res.render替换为res.json。
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!');
        })
    });

})