333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
'use strict';
 
const methods = require('methods');
const EggTest = require('./http_test');
const mockHttpServer = require('./mock_http_server');
 
// patch from https://github.com/visionmedia/supertest/blob/199506d8dbfe0bb1434fc07c38cdcd1ab4c7c926/index.js#L19
 
/**
 * Test against the given `app`,
 * returning a new `Test`.
 *
 * @param {Application} app
 * @return {Test}
 * @api public
 */
 
module.exports = app => {
  const server = mockHttpServer(app);
  const obj = {};
  for (const method of methods) {
    obj[method] = url => {
      // support pathFor(url)
      if (url[0] !== '/') {
        const realUrl = app.router.pathFor(url);
        if (!realUrl) throw new Error(`Can\'t find router:${url}, please check your \'app/router.js\'`);
        url = realUrl;
      }
 
      return new EggTest(server, method, url);
    };
  }
  obj.del = obj.delete;
  return obj;
};