Я сознательно включил мой обратный вызов только при запуске:
after_create :send_slack_notification unless Rails.env.test?
def send_slack_notification
SlackNotifier.send('test')
end
Теперь я хотел бы создать тест в RSpec.Есть ли способ изменить среду для этого конкретного теста?Очевидно, что следующее не работает: (
it "sends a slack notification after registration" do
notifier = double(SlackNotifier)
expect(notifier).to receive(:send)
user_create
end
Добавлен класс SlackNotifier
class SlackNotifier
URI = ENV['SLACK_WEBHOOK']
CHANNEL = "#channel"
USERNAME = "Bot"
def self.message msg, uri: URI, channel: CHANNEL, username: USERNAME
new(uri, channel:channel, username:username).message(msg)
end
def initialize uri = URI, channel: CHANNEL, username: USERNAME
raise UriNotSetError unless uri
@client ||= Slack::Notifier.new(uri, channel: channel , username: username)
end
def message msg
@client.ping msg
end
class UriNotSetError < StandardError
def message
"The URI for the Slack Webhook was not properly configured, make sure you set ENV['SLACK_WEBHOOK']"
end
end
end