Come posso testare un controller Express che dialoga con integrazioni di terze parti?

0

Ho un semplice server express.

C'è una rotta che accetta sia un punteggio NPS sia un'email nella sua req.params .

Qui: app.put('/api/nps/:score/:email', npsController.sendIntercomNPS)

Il controller attuale è molto semplice, assomiglia a questo:

const generateIntercomClient = () =>
    new Intercom.Client({ token: process.env.INTERCOM_TOKEN })

const npsController = {
    async sendIntercomNPS(req, res, next) {
        const { email, score } = req.params
        const client = generateIntercomClient()
        try {
            await client.users.update({
                email,
                custom_attributes: {
                    nps_score: score
                }
            })
            res.status(200).end()
        } catch (e) {
            next(e)
        }
    }
}

So che funziona e l'ho testato rigorosamente su Postman e assicurandomi che i miei dati utente nella dashboard di Intercom siano stati aggiornati.

Come posso testarlo usando la moka senza dover realmente comunicare con il vero client intercom?

Questo è il test di base che ho messo insieme:

describe('NPS controller', () => {
  it('PUT to /api/nps/:score/:email updates a users intercom profile with their nps score', async () => {
    const res = await request(app).put('api/nps/5/[email protected]')
    assert.ok(true)
  })
})

Ovviamente non voglio eseguirlo realmente perché ogni volta che viene eseguito il test, parlerà direttamente all'interfono. Devo "fingere" le cose dell'interfono?

Grazie

    
posta Matt Cleary 03.01.2018 - 19:00
fonte

0 risposte

Leggi altre domande sui tag