首页 > 解决方案 > 使用 Chai 在 Bot Framework 中对多个消息进行单元测试

问题描述

我正在使用 Chai 通过单元测试来覆盖我的聊天机器人(使用 Bot Framework 构建)。在一种情况下,机器人通过 2 条消息响应用户。我想检查两条消息是否正确。我发现这个测试唯一没有失败的是:

bot.on('send', (message) => {
        expect(message.text).to.satisfy(function(text) {
            if (text === message1 || text === message2 ) {
                return true;
            }
            else {
                return false;
            }
        });


    });

done();

正如我通过测试看到的,回调发生了两次,当机器人正常运行时测试通过;但是,测试并没有真正检查是否以正确的顺序返回了 2 条不同的消息。

有没有办法使用 Chaiexpect或其他工具来做到这一点?

标签: node.jsunit-testingbotframeworkchai

解决方案


例如,如果您使用 sinon 创建回调函数的 spy,您可以断言第一次调用回调是使用消息 1,第二次调用是使用消息 2。 spy.firstCall.callWith(message1); spy.secondCall.callWith(message2); 如果您愿意,可以在这里阅读更多内容 - http://sinonjs.org/releases/v6.0.1/spies/


推荐阅读