Documentation

Do you use documentation to use NewBot Framework

Tester un scénario

Tapons newbot test dans le terminal pour lancer les tests unitaires

Effectuer un test par scénario

Initialisons le scénario

import { ConverseTesting } from 'newbot/testing'
import mainSkill from './main'

describe('My own test', () => {
    let converse, userConverse

    beforeEach(() => {
        converse = new ConverseTesting(mainSkill)
        userConverse = converse.createUser()
    })
})

Le contenu de main.converse est le suivant :

@Event('start') 
start() {
    > Hello
}

Le but est de tester si le message envoyé est bien Hello quand l'utilisateur interagit pour la première fois.

Ajoutons donc un test :

import assert from 'assert'
import { ConverseTesting } from 'newbot/testing'
import mainSkill from './main'

describe('My own test', () => {
    let converse, userConverse

    beforeEach(() => {
        converse = new ConverseTesting(mainSkill)
        userConverse = converse.createUser()
    })

    it('Chatbot says "Hello"', () => {
        return userConverse
            .start(testing => {
                assert.equal(testing.output(0), 'Hello')
            })
            .end()
    })
})
  1. Utilisons la méthode start() pour commencer le scénario. La fonction en paramètre contient l'argument testing. Il vous servira à effectuer plusieurs tests.
  2. Ici, on utilise la fonction output() pour récupérer le premier message envoyé par le script

Remarquez que la méthode end() retourne une promesse. Avec mocha, nous pouvons retourner la promesse à la fonction it()

Il est possible de récupérer tous les messages envoyés par le script. Pour cela, ne mettons pas de paramètres à la méthode.

const array = testing.output() // Tableau de messages

:::

Tester la saisie

Le contenu de main.converse est maintenant le suivant :

@Event('start') 
start() {
    > Hello
    Prompt()
    > Welcome { :text }
}

Le test :

import assert from 'assert'
import { ConverseTesting } from 'newbot/testing'
import mainSkill from './main'

describe('My own test', () => {
    let converse, userConverse

    beforeEach(() => {
        converse = new ConverseTesting(mainSkill)
        userConverse = converse.createUser()
    })

    it('Test Prompt', () => {
        return userConverse
            .start(testing => {
                assert.equal(testing.output(0), 'Hello')
            })
            .prompt('Sam', testing => {
                assert.equal(testing.output(0), 'Welcome Sam')
            })
            .end()
    })
})

Remarquons que la méthode start() effectue tous les tests jusqu'à la demande de saisie. Ensuite, nous utilisons prompt() pour saisir un texte (premier paramètre) et le scénario continue.

Effectuer un test rapide de la conversation

Il est possible d'écrire un test unitaire plus rapidement si l'on souhaite tester une simple conversation :

Le scénario est toujours le suivant :

@Event('start') 
start() {
    > Hello
    Prompt()
    > Welcome { :text }
}
import { ConverseTesting, user, bot } from 'newbot/testing'
import mainSkill from './main'

describe('My own test', () => {
    let converse, userConverse

    beforeEach(() => {
        converse = new ConverseTesting(mainSkill)
        userConverse = converse.createUser()
    })

    it('Test conversation', () => {
        return userConverse
            .conversation(
                bot `Hello`,
                user `Sam`,
                bot `Welcome Sam`
            )
    })
})
© 2019 NewBot