I was trying to call another function which is in same ejs file.
async function (request, state, logger) {
var fs = require('fs');
var path = require('path');
var util = require('util');
var response;
var RspFilename = "my-success.xml";
var responsepath = path.join('ConfigFiles', 'Responses', 'ABS', RspFilename);
response = fs.readFileSync((responsepath), 'utf8');
await this.sleep(1000);
return {
headers: {
"HTTP-Response-Code": 200,
"HTTP-Response-Code-Text": "OK",
"Content-Type": "text/xml"
},
"statusCode": "200",
body: response
};
}
function sleep(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
I am trying this mountebank. When call the endpoint I get below error though
{
"errors": [
{
"code": "invalid injection",
"message": "invalid response injection",
"source": "(async function (request, state, logger) {\n var fs = require('fs');\n var path = require('path');\n var util = require('util');\n var response;\n var RspFilename = \"my-success.xml\";\n var responsepath = path.join('ConfigFiles', 'Responses', 'ABS', RspFilename);\n response = fs.readFileSync((responsepath), 'utf8');\n\n logger.info(\"---------Response Sent Successfully--------\" + RspFilename + response);\n await this.sleep(1000);\n return {\n headers: {\n \"HTTP-Response-Code\": 200,\n \"HTTP-Response-Code-Text\": \"OK\",\n \"Content-Type\": \"text/xml\"\n },\n \"statusCode\": \"200\",\n body: response\n };\n}\n\n\nfunction sleep(ms) {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n})(scope, injectState, logger, deferred.resolve, imposterState);",
"data": "Unexpected token function",
"name": "Error",
"stack": "Error\n at Object.from (C:\\Repo\\mountebank\\src\\util\\inherit.js:15:17)\n at createError (C:\\Repo\\mountebank\\src\\util\\errors.js:10:26)\n at Object.InjectionError (C:\\Repo\\mountebank\\src\\util\\errors.js:25:16)\n at inject (C:\\Repo\\mountebank\\src\\models\\responseResolver.js:43:44)\n at processResponse (C:\\Repo\\mountebank\\src\\models\\responseResolver.js:243:20)\n at Object.resolve (C:\\Repo\\mountebank\\src\\models\\responseResolver.js:277:16)\n at Object.resolve (C:\\Repo\\mountebank\\src\\models\\stubRepository.js:136:25)\n at F.respond (C:\\Repo\\mountebank\\src\\models\\http\\baseHttpServer.js:94:34)\n at C:\\Repo\\mountebank\\src\\models\\abstractServer.js:105:39\n at _fulfilled (C:\\Repo\\mountebank\\node_modules\\q\\q.js:854:54)"
}
]
}
Actually my requirement is to add some delay for the response.
BTW I tried Mountebank wait, but couldn't see any delay.
Following the code examples on http://www.mbtest.org/docs/api/injection, It seems, mountebank doesn't expect anything to follow the single anonymous function, hence "Unexpected token function" when it starts reading
function sleep
.Try moving
sleep
into the other function. Not far off, since you've already done the same with module imports:Or simply
Or, simplifying the whole function