Node.js 从bot.on(';send';)调用processMessage()

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

我正在使用Jest为我的机器人编写测试,我有以下代码:

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!"]