Test a scenario
Type npm test in the terminal to run the unit tests
Perform a scenario test
Let's initialize the scenario
import { ConverseTesting } from 'newbot/testing'
import mainSkill from './main'
describe('My own test', () => {
let converse, userConverse
beforeEach(() => {
converse = new ConverseTesting(mainSkill)
userConverse = converse.createUser()
})
})The content of main.converse is as follows:
@Event('start')
start() {
> Hello
}The goal is to test if the message sent is Hello when the user interacts for the first time.
So let's add a 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()
})
test('Chatbot says "Hello"', () => {
return userConverse
.start(testing => {
assert.equal(testing.output(0), 'Hello')
})
.end()
})
})Let's use the
start()method to start the scenario. The function in parameter contains the argumenttesting. It will be used to perform several tests.Here, we use the
output()function to retrieve the first message sent by the script
Note that the
end()method returns a promise. Withmocha, we can return the promise toit()functionIt is possible to recover all messages sent by the script. For that, do not put parameters to the method.
const array = testing.output() // Tableau de messagesPrompt test
The content of main.converse is now the following:
@Event('start')
start() {
> Hello
Prompt()
> Welcome { :text }
}The 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()
})
test('Test Prompt', () => {
return userConverse
.start(testing => {
assert.equal(testing.output(0), 'Hello')
})
.prompt('Sam', testing => {
assert.equal(testing.output(0), 'Welcome Sam')
})
.end()
})
})Note that the start() method performs all tests up to the input request. Then we use prompt() to enter a text (first parameter) and the scenario continues.
Perform a quick test of the conversation
It is possible to write a unit test more quickly if you want to test a simple conversation:
The scenario is always the following:
@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()
})
test('Test conversation', () => {
return userConverse
.conversation(
bot `Hello`,
user `Sam`,
bot `Welcome Sam`
)
})
})Last updated
Was this helpful?