# 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()
})
})
- Utilisons la méthode
start()
pour commencer le scénario. La fonction en paramètre contient l'argumenttesting
. Il vous servira à effectuer plusieurs tests. - 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. Avecmocha
, nous pouvons retourner la promesse à la fonctionit()
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`
)
})
})