mock response routes no longer pay attention to query strings
This commit is contained in:
@ -258,21 +258,21 @@ If the route contains tokens, their values are passed to the response. For examp
|
|||||||
{
|
{
|
||||||
"mocks": [
|
"mocks": [
|
||||||
{
|
{
|
||||||
"route": "/five/:id\\?name=:name",
|
"route": "/five/:id",
|
||||||
"module": "/mocks/example.js"
|
"module": "/mocks/example.js"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
...the values `id` and `name` are passed to the body function. For example, a path of `/five/10?name=Lionel` would pass `10` and `Lionel` to the body function:
|
...the `id` value is passed to the body function. For example, a path of `/five/10?name=Lionel` would pass `10` to the body function. Additional, the value `Lionel` would be available on `ctx.query.name`:
|
||||||
```js
|
```js
|
||||||
const fs = require('fs')
|
const fs = require('fs')
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
response: {
|
response: {
|
||||||
body: function (ctx, id, name) {
|
body: function (ctx, id) {
|
||||||
ctx.body = `<h1>id: ${id}, name: ${name}</h1>`
|
ctx.body = `<h1>id: ${id}, name: ${ctx.query.name}</h1>`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,11 +43,11 @@
|
|||||||
"module": "/mocks/stream-self.js"
|
"module": "/mocks/stream-self.js"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"route": "/five/:id\\?name=:name",
|
"route": "/five/:id",
|
||||||
"module": "/mocks/five.js"
|
"module": "/mocks/five.js"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"route": "/users*",
|
"route": "/users",
|
||||||
"module": "/mocks/users.js"
|
"module": "/mocks/users.js"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
response: function (ctx, id, name) {
|
response: function (ctx, id) {
|
||||||
ctx.body = `<h1>id: ${id}, name: ${name}</h1>`
|
ctx.body = `<h1>id: ${id}, name: ${ctx.query.name}</h1>`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -258,21 +258,21 @@ If the route contains tokens, their values are passed to the response. For examp
|
|||||||
{
|
{
|
||||||
"mocks": [
|
"mocks": [
|
||||||
{
|
{
|
||||||
"route": "/five/:id\\?name=:name",
|
"route": "/five/:id",
|
||||||
"module": "/mocks/example.js"
|
"module": "/mocks/example.js"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
...the values `id` and `name` are passed to the body function. For example, a path of `/five/10?name=Lionel` would pass `10` and `Lionel` to the body function:
|
...the `id` value is passed to the body function. For example, a path of `/five/10?name=Lionel` would pass `10` to the body function. Additional, the value `Lionel` would be available on `ctx.query.name`:
|
||||||
```js
|
```js
|
||||||
const fs = require('fs')
|
const fs = require('fs')
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
response: {
|
response: {
|
||||||
body: function (ctx, id, name) {
|
body: function (ctx, id) {
|
||||||
ctx.body = `<h1>id: ${id}, name: ${name}</h1>`
|
ctx.body = `<h1>id: ${id}, name: ${ctx.query.name}</h1>`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -78,11 +78,11 @@ function mime (mimeTypes) {
|
|||||||
|
|
||||||
function mockResponses (route, targets) {
|
function mockResponses (route, targets) {
|
||||||
targets = arrayify(targets)
|
targets = arrayify(targets)
|
||||||
debug('mock route: %s, targets: %j', route, targets);
|
debug('mock route: %s, targets: %s', route, targets.length);
|
||||||
const pathRe = pathToRegexp(route)
|
const pathRe = pathToRegexp(route)
|
||||||
|
|
||||||
return function mockResponse (ctx, next) {
|
return function mockResponse (ctx, next) {
|
||||||
if (pathRe.test(ctx.url)) {
|
if (pathRe.test(ctx.path)) {
|
||||||
const testValue = require('test-value')
|
const testValue = require('test-value')
|
||||||
|
|
||||||
/* find a mock with compatible method and accepts */
|
/* find a mock with compatible method and accepts */
|
||||||
@ -101,9 +101,9 @@ function mockResponses (route, targets) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (target) {
|
if (target) {
|
||||||
debug('target response: %s', target.response)
|
// debug('target response: %s', target.response)
|
||||||
if (t.isFunction(target.response)) {
|
if (t.isFunction(target.response)) {
|
||||||
const pathMatches = ctx.url.match(pathRe).slice(1)
|
const pathMatches = ctx.path.match(pathRe).slice(1)
|
||||||
target.response.apply(null, [ctx].concat(pathMatches))
|
target.response.apply(null, [ctx].concat(pathMatches))
|
||||||
} else if (t.isPlainObject(target.response)) {
|
} else if (t.isPlainObject(target.response)) {
|
||||||
Object.assign(ctx.response, target.response)
|
Object.assign(ctx.response, target.response)
|
||||||
|
Reference in New Issue
Block a user