为什么我在评估不正确的http状态时得到uncaughtException而不是AssertionError?

时间:2018-12-26 17:55:14

标签: javascript typescript express chai chai-http

我试图了解如何使用chai-http正确测试Express应用。

我正在尝试编写单元测试以测试是否返回了某些http错误,但是在编写以下断言时遇到了问题:

chai.use(chaiHttp);
const expect = chai.expect;

const app = express();
app.post('/', (req, res) => {
    res.status(400).json({error : 'message'});
});

describe('testbench for chai-http', function() {
    it('show me how this works', function(done) {
        chai.request(app)
            .post('/')
            .send('bad payload')
            .end(function(err, res) {
                expect(err).to.have.status(500);
                done();
            });
    });
});

我希望控制台输出类似于:

AssertionError: expected 500 but got 400 instead

但是,我得到的却是:

uncaughtException: expected [Error: Bad Request] to have status code 500 but got 400

具有很长的堆栈跟踪。我注意到,这仅发生在.end()内的回调函数中的断言,因此我猜想这是express与chai-http交互的问题。我到处寻找类似的问题,但找不到任何问题。一般而言,我对Node和javascript还是很陌生,因此可以提供任何帮助!

0 个答案:

没有答案