Unit test della libreria di messaggistica di rabbitmq?

1

Ho difficoltà a capire come testare una libreria destinata a essere utilizzata per comunicare con un altro servizio web. Ad esempio, ho una classe Messenger che inizializza una connessione e richiede una configurazione e un indirizzo remoto da eseguire. Come potrei fare per testare qualcosa del genere?

import { MessengerConfig } from '../Interfaces/MessengerConfig';
import { Connection, ConfirmChannel, connect } from 'amqplib';
import * as Promise from 'bluebird';

export default class Messenger {

    logger;
    connection: Connection;
    channel: ConfirmChannel;
    config: MessengerConfig;

    constructor(logger, config: MessengerConfig) {
        this.logger = logger;
        this.connection = null;
        this.channel = null;
        this.config = config;
    }

    public start(durable: boolean = true): Promise<any> {
        return connect(this.config.host)
            .then((conn) => {
                this.connection = conn;
                return this.connection.createConfirmChannel();
            })
            .then((chan) => {
                this.channel = chan;
                return this.channel.prefetch(1);
            })
            .then(() => {
                return Promise.map(this.config.subKeys, (route) => {
                    return this.channel.assertExchange(route.exchange, 'direct', { durable: durable });
                });
            });
    }

}

Che cosa posso modificare per testare la funzione start ? Oppure vale la pena provare? In .NET questo è stato un po 'più facile perché ho potuto creare costruttori sovraccaricati per iniettare un finto HttpClient o qualsiasi altra cosa di cui avevo bisogno. Non riesco a sovraccaricare le funzioni in dattiloscritto / javascript come farei lì, comunque.

    
posta Cuthbert 26.07.2017 - 22:55
fonte

1 risposta

4

Sì, sembra un po 'inutile prendere in giro tutti gli oggetti della biblioteca. Ti ritroverai con un test che ha appena testato la tua simulazione.

Prendo in giro il server rabbitmq con uno locale che restituisce dati fittizi e fa un test di integrazione

    
risposta data 27.07.2017 - 00:14
fonte

Leggi altre domande sui tag