【问题标题】:Mocha Chai HTTP post request not workingMocha Chai HTTP 发布请求不起作用
【发布时间】:2016-06-04 19:38:38
【问题描述】:

以下测试不适用于 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;
                });
});

输出:

网络请求:/hb : : 错误:超过 2000 毫秒的超时。确保在此测试中调用了 done() 回调。

【问题讨论】:

    标签: mocha.js chai


    【解决方案1】:

    您需要添加以下内容:

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

    你可以通过Post request via Chai参考这个问题

    【讨论】:

    • 首先,这根本不是问题。问题是 OP 无法让 Mocha 检测到测试失败。设置内容类型并不能解决这个问题。其次,如果这真的是这个问题的答案,那么你所做的就是将此问题标记为另一个问题的重复。你所做的是发布一个与其他地方的答案重复的答案。
    【解决方案2】:

    chai-http 添加到chai 的函数返回承诺。在您的代码中,您返回承诺,这很好。但是,您还声明您的测试采用 a 参数:function (done)。如果你不返回承诺,这会很好,但返回承诺确实是这里更好的机制。当你声明你的测试接受一个参数时,Mocha 会忽略测试的返回值,因此 promise 会被忽略。因此,只需删除您对done 的使用。

    这是一个示例,它重现了您在原始代码中遇到的错误,其中 err 在您传递给 then 的函数中未定义。

    '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)
    

    【讨论】:

    • 但为什么会出现错误消息破坏摩卡咖啡:npm ERR! Linux 3.10.0-514.10.2.el7.x86_64 npm 错误! argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "test" npm ERR!节点 v6.10.0 npm 错误! npm v3.10.10 npm 错误!代码 ELIFECYCLE npm 错误! bidonhomesnode@1.0.0 测试:mocha ./tests/ npm ERR!退出状态 1
    • 这是一个与 OP 报告的问题不同的问题。如果您找不到答案,您可以发布一个新问题。确保包含minimal reproducible example
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 2019-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多