首页 文章

Mocha Chai HTTP发布请求无效

提问于
浏览
1

以下测试不适用于mocha-chai,它能够获取输入请求但会抛出错误消息 .

it('/hb  : ', function (done) {
            return chai.request(app)
                .post('/hb')
                .send({"a":1 })
                .then(function (res) {
                    expect(err).to.be.null;
                    expect(res).to.have.status(200);
                    // { ah: { rt: [Object] }, ad: { mojo: 1 } } }
                    //console.log("CAlling DOne ........... +");
                    done();
                }, function (err) {
                    //console.log(err);
                    throw err;
                });
});

输出:

Web请求:/ hb ::错误:超出2000ms的超时 . 确保在此测试中调用done()回调 .

2 回答

  • 1

    chai-http 添加到 chai 的函数返回promise . 在您的代码中,您将返回承诺,这很好 . 但是,您还要声明测试以获取参数: function (done) . 如果您没有返回承诺,这将没有问题,但返回承诺确实是更好的机制 . 当您声明测试采用参数时,Mocha会忽略测试的返回值,因此会忽略promise . 所以只需删除你对 done 的使用 .

    这是一个示例,它再现了原始代码中的错误,并且在传递给 then 的函数中未定义 err .

    'use strict';
    var app = require('./server');
    var chai = require('chai');
    chai.use(require('chai-http'));
    
    var expect = chai.expect;
    
    it('/hb', function () {
        return chai.request(app)
            .post('/hb')
            .send({a: 1})
            .then(function (res) {
                expect(err).to.be.null;
                expect(res).to.have.status(200);
            });
    });
    

    如果服务器返回200状态,那么您将在控制台上获得此状态:

    1) /hb
    
      0 passing (26ms)
      1 failing
    
      1)  /hb:
         ReferenceError: err is not defined
          at test.js:13:20
    

    如果服务器返回400状态,则输出为:

    1) /hb
    
      0 passing (24ms)
      1 failing
    
      1)  /hb:
         Error: Bad Request
          at Test.Request.callback (node_modules/superagent/lib/node/index.js:792:17)
          at IncomingMessage.<anonymous> (node_modules/superagent/lib/node/index.js:990:12)
          at endReadableNT (_stream_readable.js:913:12)
    
  • 0

    你需要添加以下内容:

    .set('content-type', 'application/x-www-form-urlencoded')
    

    你可以在Post request via Chai上提到这个问题

相关问题