Wednesday, 3 June 2020

Is this a good way to write a middleware for testing?

At the moment, I cannot figure how to test this because it's returning undefined.// middleware.js module.exports = (req, resp) => { db.connect((err, client, done) => { if (err) console.log(err); } (async() => { try { await client.query('BEGIN'); // do stuff await client.query('COMMIT') .then(() => resp.status(200).send({statusText: 'success'}); } catch (e) { await client.query('ROLLBACK'); throw e; } finally { done(); } })() .catch(err => console.log(err)) } I would use this in my route handler like soapp.get('/middleware', require('./middleware')); And in my testconst middleware = require('./middleware'); it('will return success', (done) => { middleware(req, resp); // undefined } I've tried adding returns to everything in my middleware and still getting undefined.resp is a Response class that I've created to mock the express response. I've tried console logging resp in my test, but nothing in it changed. resp.data is undefined after calling middleware(req, resp).Is there a better way to structure my middleware so that I can test it easier?

Submitted June 04, 2020 at 03:51AM by eggtart_prince

No comments:

Post a Comment