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