nodejs redisClient с модульным тестом retry_strategy - PullRequest
0 голосов
/ 13 ноября 2018

Я нахожусь на этапе обучения юнит-тестированию с использованием Sinon и Mocha с отчетом NYC.Я полностью сбит с толку, как покрыть этот код

let client = redis.createClient({
    retry_strategy: function(options) {
        if (options.error) {
            if (options.error.code === 'ECONNREFUSED') {
                // End reconnecting on a specific error
                // and flush all commands with a individual error
                return new Error('The server refused the connection');
            }
            if (options.error.code === 'ECONNRESET') {
                return new Error('The server reset the connection');
            }
            if (options.error.code === 'ETIMEDOUT') {
                return new Error('The server timeouted the connection');
            }
        }
        if (options.total_retry_time > 1000 * 60 * 60) {
            // End reconnecting after a specific timeout and flush all commands
            // with a individual error
            logger.error('Retry time exhausted')
            return new Error('Retry time exhausted');
        }
        if (options.attempt > 10) {
            // End reconnecting with built in error
            logger.error('Retry attempt exceed')
            return undefined;
        }
        // reconnect after
        return Math.min(options.attempt * 100, 3000);
    },
    ...config, // my function pass this arguments
})

Я пытался заглушить redis.createClient, но, похоже, он не покрывает retry_strategy (как параметр), и он также закончился с открытым отчетом о покрытии.

Любые мысли или идеи для меня, как покрыть это заявление retry_strategy и ветви?или какие-то подходы вместо того, чтобы заглушки?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...