Я строю REST API в Express и пытаюсь смоделировать Redis в моих модульных тестах Jasmine (используя redis-mock).
Если supertest делает запрос к API, как я могу сказать моему приложению использовать фиктивный Redis вместо реального redis? .Я знаю, что мне, вероятно, понадобится создать отдельные модули для redis, которые я могу как-то поменять, но не знаю, как поменять их для обычного запроса на супер-запрос.
Юнит тест:
describe('Instance API v1', () => {
it('returns a list of instances', (done) => {
request(app.default)
.get('/v1/instance')
.set('Authorization', 'Bearer '+authToken)
.expect(200)
.expect('Content-Type', 'application/json; charset=utf-8')
.end((error) => (error) ? done.fail(error) : done());
});
});
Обработчик маршрута:
getAll = (request: express.Request, response: express.Response) => {
let redis: RedisClient = request.app.locals.redisclient;
let keys:string[] = [];
let prefix = 'instance/*';
const scanner = new RedisScan(redis);
scanner.scan('instances/*', (err, matchingKeys) => {
if (err) throw(err);
// matchingKeys will be an array of strings if matches were found
// otherwise it will be an empty array.
console.log(matchingKeys);
response.json(matchingKeys);
});
};