文章做者:Maxime Khoygit
原文連接:Writing integration tests for a Botfuel Dialog chatbotgithub
編譯:一熊翻譯組 Masonnpm
前言:由於 Botfuel Dialog 聊天機器人是一個網絡應用,你能夠依靠它強大的編程功能,例如單元與集成測試,來測試你的機器人。編程
在這篇教程中你能夠學習如何使用 Jest 來測試你的聊天機器人,它是一個由 Facebook 開發的測試庫。不過,你也可使用其它測試庫,例如 Mocha。json
至於這篇教程的目標,是讓你學習如何將機器人的手動測試自動化,以確保聊天機器人如期工做。網絡
對於這篇教程,咱們會從簡單的樣例機器人開始。請確保你已按照入門教程運行直至安裝部分。async
舉個例子,初始的樣例機器人會有以下的行爲:學習
讓咱們來寫一個測試來確保這一簡單功能的運轉。測試
首先,咱們須要安裝 Jest 做開發基礎:ui
npm install --dev jest
一旦 Jest 安裝完成,添加以下test
腳本到你的package.json
文件:
"scripts": { "start": "botfuel-run", "train": "botfuel-train", "test": "jest" },
你能夠經過npm test
來運行 Jest。
爲了在測試模式下運行聊天機器人,咱們須要一個配置文件指出咱們將用到的test
適配器。用以下內容在根級別建立一個test-config.js
文件:
module.exports = { adapter: 'test', };
爲了模擬人與機器人之間的對話,咱們會使用Bot
的play
方法。這種方法須要一組用戶消息,其能夠表明全部用戶會發給聊天機器人的全部消息。對於用戶來講,它多是如下幾種類型:
PostbackMessage
(回執消息)UserImageMessage
(用戶圖片消息)UserTextMessage
(用戶文本消息)在咱們的樣例中,他們都是些簡單的UserTextMessage
。
舉個例子,模擬這段對話:
咱們會編寫:
const bot = new Bot(config); const userId = bot.adapter.userId; await bot.play([ new UserTextMessage('Hello'), new UserTextMessage('My name is Bob'), ]);
用戶與機器人被捕捉的輸出消息被儲存進bot.adapter.log
,因此咱們能夠編寫如下程序來測試機器人是否如期響應:
expect(bot.adapter.log) .toEqual([ new UserTextMessage('Hello'), new BotTextMessage('Hello human!'), new UserTextMessage('My name is Bob'), new BotTextMessage('Nice to meet you Bob!'), ] .map(msg => msg.toJson(userId)) );
比較指望的與實際的輸出,咱們提供方便的toJson
方法以便消息能夠相比作原生的 JSON。這種方法須要userId
做爲一個參數,由於每一個UserTextMessage
均可以轉化爲 JSON 的形式,並以消息做者的分類儲存在userId
下。
這裏,你一樣也可使用所有的消息類型。
讓咱們來寫一下完整的測試樣例吧!
在聊天機器人的跟級別構建一個tests
庫並在其中用以下內容建立一個hello.test.js
文件:
const { Bot, BotTextMessage, UserTextMessage } = require('botfuel-dialog'); const config = require('../test-config'); test('answers greeting and name', async () => { const bot = new Bot(config); const userId = bot.adapter.userId; await bot.play([new UserTextMessage('Hello'), new UserTextMessage('My name is Bob')]); expect(bot.adapter.log).toEqual( [ new UserTextMessage('Hello'), new BotTextMessage('Hello human!'), new UserTextMessage('My name is Bob'), new BotTextMessage('Nice to meet you Bob!'), ].map(msg => msg.toJson(userId)), ); });
運行測試前,先執行如下命令:
BOTFUEL_APP_TOKEN=<the BOTFUEL_APP_TOKEN> BOTFUEL_APP_ID=<the BOTFUEL_APP_ID> BOTFUEL_APP_KEY=<the BOTFUEL_APP_KEY> npm test
這裏須要你的應用證書由於你的聊天機器人會調用 NLP API。
你會看到以下結果:
到此爲止,恭喜你,你已經成功地將一個聊天機器人的測試樣例自動化!
一熊翻譯組隸屬於一熊科技,咱們不生產科技雜文,咱們只是 GFW 上語種間的搬運工,歡迎點擊 「一熊翻譯組」來加入咱們。主線產品 「倍洽」日前迎來新版本上線,欲體驗智能聊天機器人所帶來的將來氣息,與全新工做體驗的無窮魅力,歡迎點擊 「倍洽」,從建立屬於你的第一個團隊開始……