使用请求有效负载模拟HTTP请求和响应

时间:2018-03-26 12:07:14

标签: node.js http mocking

我使用以下代码使用node-mocks-http模拟HTTP请求和响应对象;

   var request  = httpMocks.createRequest({
        method: 'POST',
        url: '/test',
        body : "some body",
    });
    var response = httpMocks.createResponse({
        eventEmitter: require('events').EventEmitter,
        req : request
    });

    response.on('end', function() {
        console.log(response._getData())
        expect(response._getData()).toEqual("kill me");
        expect(response.statusCode ).toEqual(200);
        expect(response._isEndCalled()).toBe(true);
        done();
    });

    handleReqRes(request,response);

但它不会触发任何请求事件。

function handleReqRes(req,res){
    req.on("data", chunk => {
        console.log(chunk);
    });
    req.on("end", () => {
        console.log("end");
    });
    res.end("kill me");
}

因此,对于以上呼叫它只是记录"杀了我"。如果它可以与其他模拟库一起使用,我可以切换到它。这很好。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我实际上需要在结束时自己发出事件

request.emit('data', Buffer.from(data));
request.emit('end');

我将更新原始插件以获得执行此操作的方法。