Модульное тестирование нескольких сообщений в Bot Framework с использованием Chai - PullRequest
0 голосов
/ 24 июня 2018

Я покрываю своего чат-бота (созданного с помощью Bot Framework) модульными тестами с использованием Chai. В одном случае бот отвечает пользователю 2 сообщениями. Я хочу проверить, что оба сообщения верны. Единственное, что я нашел для этого теста, чтобы не потерпеть неудачу, это:

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


    });

done();

Как видно из теста, обратный вызов происходит дважды, и тест проходит, когда бот работает правильно; однако тест не проверяет, были ли возвращены 2 разных сообщения в правильном порядке.

Есть ли способ сделать это, используя expect Чай или другие инструменты?

Ответы [ 2 ]

0 голосов
/ 30 июня 2018

Если вы создаете шпион для функции обратного вызова, например, с помощью sinon, вы можете утверждать, что первый вызов для обратного вызова был с message1, а второй - с сообщением 2. spy.firstCall.calledWith (message1); spy.secondCall.calledWith (message2); Вы можете прочитать больше здесь, если хотите - http://sinonjs.org/releases/v6.0.1/spies/

0 голосов
/ 24 июня 2018

Я не уверен, что есть инструмент для этого, потому что это кажется очень специфической проблемой. Что вы можете сделать, это:

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

done();

И я не уверен насчет части done(). Возможно, вы захотите позвонить, когда index === messages.length

...