Node.js 从bot.on(';send';)调用processMessage()
我正在使用Jest为我的机器人编写测试,我有以下代码:Node.js 从bot.on(';send';)调用processMessage(),node.js,testing,jestjs,botframework,Node.js,Testing,Jestjs,Botframework,我正在使用Jest为我的机器人编写测试,我有以下代码: let bot; let conn; let index = 0; let responses = []; let expectedResponses = []; beforeEach(() => { let connector = new builder.ConsoleConnector(); bot = new builder.UniversalBot(connector); conn = connect
let bot;
let conn;
let index = 0;
let responses = [];
let expectedResponses = [];
beforeEach(() => {
let connector = new builder.ConsoleConnector();
bot = new builder.UniversalBot(connector);
conn = connector;
});
test('test case 1 jeff', () => {
bot.library(require('../dialogs/inputRecognizer').createLibrary());
// the main dialog "/" should start "inputRecognizer:/"
// as it can be seen [https://github.com/Microsoft/BotBuilder/blob/858aad96cdd1fabbf7f9a29ee797eb03111d7cba/Node/core/tests/Dialogs.js][1] the code below seems to be identical to the one shown in examples
bot.dialog('/', [
(session) => {
session.beginDialog('inputRecognizer:/');
}
]);
basicMessages.forEach(o => {if (o.in) {expectedResponses.push(o.in)}});
bot.on('send', function (message) {
responses.push(message.text);
index++;
if (index < testMessages.length) {
conn.processMessage(basicMessages[index].out);
} else {
expect(responses).toEqual(expectedResponses);
}
});
conn.processMessage(basicMessages[0].out);
});
编辑:basicMessages
这是:
module.exports = [
{
out: 'hi',
in: 'Please type your inquiry!',
},
{
out: 'aaa',
in: 'Please type your inquiry!'
},
{
out: 'aaa',
in: 'Please type your inquiry!'
},
{
out: 'aaaa',
in: 'Please type your inquiry!'
},
{
out: 'aa',
in: 'Please type your inquiry!'
}
];
似乎您的
基本消息
是错误的:您的预期响应
数组如下所示:
["Please type your inquiry!", "Please type your inquiry!", "Please type your inquiry!", "Please type your inquiry!", "Please type your inquiry!"]
我认为当您将消息。Text
添加到响应列表中时,这不是预期的,您稍后将使用进行断言
此外,您不需要createLibrary()代码>
您可以只使用bot.library(require('../dialogs/inputrecongnizer')代码>
我重新创建了您的项目(),代码在提示后很好地到达瀑布。我被您发布的代码弄糊涂了。我在测试中看到一个/
对话框,然后您显示另一个带有两步瀑布的对话框,您说该对话框无法达到第二步。您可以共享完整的测试用例吗?第一个对话框调用“inputRecognizer:/”对话框。第二段代码是inputRecognizer对话框本身。而基本消息
中有什么内容?如果运行bot,消息是否到达瀑布步骤?基本消息是正确的,它们只是验证它不工作,而不是工作。然而,当我克隆您的代码时,它工作得很好。我从代码中删除了createLibrary(),但它似乎没有任何帮助。每次我向对话框发送消息时,它仍然会从顶部启动瀑布。您能发布正确版本的basicMessages吗?。使用正确的basicMessages在我的代码版本上测试工作正常吗?在您的代码中测试工作正常,在我的代码中瀑布每次都会重新启动。基本消息在两者中都是相同的。我更新了botbuilder包,现在它不会重新启动瀑布。我仍然会遇到一些错误,但是瀑布问题已经解决了,所以我将这个问题标记为已回答。非常感谢你!
["Please type your inquiry!", "Please type your inquiry!", "Please type your inquiry!", "Please type your inquiry!", "Please type your inquiry!"]