我试图了解如何使用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还是很陌生,因此可以提供任何帮助!