使用Chai在Bot Framework中对多个消息进行单元测试

时间:2018-06-23 22:53:33

标签: node.js unit-testing botframework chai

我正在使用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();

通过测试可以看到,回调发生了两次,并且当bot正常运行时,测试通过了;但是,测试并未真正检查是否以正确的顺序返回了2条不同的消息。

是否可以使用Chai的expect或其他工具来做到这一点?

2 个答案:

答案 0 :(得分:1)

我不确定是否有用于此的工具,因为这似乎是一个非常具体的问题。您可以做的是:

let messages = [message1, message2]
let index = 0
bot.on('send', (message) => {
    expect(message.text).toBe(messages[index++]);
});

done();

我不确定done()部分。您可能想在index === messages.length

时调用它

答案 1 :(得分:1)

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