Тестирование RSpec для команд Slack-Ruby-Bot

#ruby #rspec #slack-api

#ruby #rspec #slack-api

Вопрос:

Я внедрял базовый slack-бот для канала, и поскольку код очень прост, у меня нет общедоступных методов. Просто команды из slack-ruby-bot gem. Но в качестве требования к проекту мне нужно добавить несколько модульных тестов в мой проект. В основном, когда я даю команду строкам @ruby_codes, это дает мне страницу wiki в этой области. как я могу это проверить? прикрепил мою версию, но тесты каждый раз терпят неудачу.

Мой пример команды выглядит следующим образом:

 module RubyCodes
  # SlackBot command methods#
  class GetWiki < SlackRubyBot::Commands::Base
    command 'strings' do |client, data, _match|
      client.say(channel: data.channel, text: 'https://en.wikipedia.org/wiki/Ruby_(programming_language)#Strings')
    end
  

Мой тестовый пример выглядит следующим образом:

 describe SlackRubyBot::Commands do
  it 'returns ruby strings wiki page' do
    expect(message: "#{SlackRubyBot.config.user} strings").to respond_with_slack_message('https://en.wikipedia.org/wiki/Ruby_(programming_language)#Strings')
  end
end
  

Заранее спасибо!

кроме того, это ошибка, которую я получаю:

 expected to receive message with text: https://en.wikipedia.org/wiki/Ruby_(programming_language)#Strings once,
        received:[{:text=>"Sorry <@user>, I don't understand that command!", :channel=>"channel"}]
  

Комментарии:

1. Вы передаете хэш в expect . Это не сработает. Пожалуйста, опубликуйте свой полный код.

2. Я обновил сообщение, включив в него случаи команд

3. expect(message: "#{SlackRubyBot.config.user} strings") на самом деле это не вызов вашего метода. Я не знаком с этим драгоценным камнем, как вы обычно отправляете сообщение из кода?

4. command 'strings' do |client, data, _match| client.say(channel: data.channel, text: 'https://en.wikipedia.org/wiki/Ruby_(programming_language)#Strings') эта строка фактически возвращает текст всякий раз, когда я вызываю строки @ruby_bot в канале