context.js 849 B

12345678910111213141516171819202122
  1. const Stream = require("stream");
  2. const Koa = require("koa");
  3. const mockContext = (req, res, app) => {
  4. const socket = new Stream.Duplex();
  5. req = Object.assign({ headers: {}, socket }, Stream.Readable.prototype, req);
  6. res = Object.assign({ _headers: {}, socket }, Stream.Writable.prototype, res);
  7. req.socket.remoteAddress = req.socket.remoteAddress || "127.0.0.1";
  8. req.url = "";
  9. app = app || new Koa();
  10. res.getHeader = k => res._headers[k.toLowerCase()];
  11. res.setHeader = (k, v) => {
  12. res._headers[k.toLowerCase()] = v;
  13. return v;
  14. };
  15. res.removeHeader = k => delete res._headers[k.toLowerCase()];
  16. return app.createContext(req, res);
  17. };
  18. mockContext.request = (req, res, app) => mockContext(req, res, app).request;
  19. mockContext.response = (req, res, app) => mockContext(req, res, app).response;
  20. module.exports = mockContext;