我正在使用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
或其他工具来做到这一点?
答案 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/