via: https://wp-kyoto.net/en/test-by-alexa-conversation
alexa-conversation is a npm packages to testing Alexa Skill.
We can test own skill like following codes.
conversation(opts)
.userSays('LaunchRequest')
.plainResponse
.shouldContain('Welcome to example skills')
.userSays('AMAZON.StopIntent')
.plainResponse
.shouldContain('See you again!')
.end()
Getting started
If we want to use the package, we have to add mocha at first.
$ npm init -y
$ npm install --save alexa-sdk
$ npm install --save-dev alexa-conversation mocha#
Make Lambda function code
After install these packages, we can make Lambda funciton.
And I made a example code for the test.
index.js
const Alexa = require('alexa-sdk')
const handlers = {
'LaunchRequest': function () {
this.emit(':tell', 'Welcome to my skill !')
},
'AMAZON.StopIntent': function () {
this.response.speak('See you again!')
this.emit(':responseReady')
}
}
module.exports.hello = (event, context, callback) => {
alexa = Alexa.handler(event, context, callback)
alexa.registerHandlers(handlers)
alexa.execute()
}
Make first test
And let's create first test.
index.test.js
const conversation = require('alexa-conversation')
// Load tested target
const app = require('../index.js')
// init
const opts = {
name: 'Alexa Sample App', // test name
appId: 'your-app-id', // Alexa Skill ID
app: app, // test target
handler: app.handler // Lambda handler
}
// write test like conversation
conversation(opts)
.userSays('LaunchRequest')
.plainResponse
.shouldContain('Welcome to my skill')
.userSays('AMAZON.StopIntent')
.plainResponse
.shouldContain('good by!')
.end()
Running the test
After create these code, we can run own test by mocha cli
$ ./node_modules/mocha/bin/_mocha index.test.js
Conversation: Alexa Sample App
User triggers: LaunchRequest
✓ Alexa's plain text response should contain: Welcome to my skill
User triggers: AMAZON.StopIntent
1) Alexa's plain text response should contain: good by!
21 passing (33ms)
1 failing
1) Conversation: Alexa Sample App
User triggers: LaunchRequest
Alexa's plain text response should contain: good by!:
AssertionError: expected ' See you again! ' to include 'good by!'
at Context.it (node_modules/alexa-conversation/response.js:100:32)
The example test has been failed. Because the AMAZON.StopIntent expects good by!
but actual source code returns See you again!
.So we have to fix the response to pass the test.
Top comments (1)
Pretty cool. How does this compare to Bespoken’s Virtual Alexa? (I’ve used that and it’s pretty helpful).