#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 в канале