Вы можете пойти простым путем и просто проверить возвращение правильного значения методом current_user#user_attribute
.Пример:
describe '#my_method' do
subject { instance.my_method } # instance is an instance of your class where #my_method is defined
let(:user) { instance_spy(ZendeskAPI::User, user_attribute: attr) }
let(:attr} { 'some-value' }
before do
allow(instance).to receive(:current_user).and_return(user)
end
it { is_expected.to eq(attr) }
end
Но я бы пошел с кассетой видеомагнитофона (здесь vcr gem ), потому что это ответ стороннего API, чтобы минимизировать риск ложноположительного результата.Следующий пример демонстрирует тестирование с записанным ответом (только в случае, если метод #current_user выполняет запрос к zendesk):
describe '#my_method', vcr: { cassette_name: 'zendesk_current_user' } do
subject { instance.my_method }
it { is_expected.to eq(user_attribute_value) } # You can find the value of user_attribute_value in recorded cassette
end
PS Я предположил, что вы добавили puts
в свой метод для отладки.Если оно сделано намеренно и является частью логики - замените eq
на output
в моем примере.