Как использовать RSpec, чтобы проверить, что метод ловит символ? - PullRequest
0 голосов
/ 03 июня 2018

Как вы можете проверить, что метод ловит брошенный символ в RSpec?У меня есть два метода, которые взаимодействуют друг с другом через #throw и #catch.Я уже выяснил, как проверить, что символ брошен на одном конце:

expect { subject.method_a }.to throw_symbol(:some_symbol)

Теперь я хочу проверить, что method_b ловит брошенный символ, который, я думаю, может выглядеть примерно так:

expect { subject.method_b }.to catch_symbol(:some_symbol)

Только это не работает.Итак, мой вопрос: как вы можете проверить, что метод перехватывает символ в RSpec?

РЕДАКТИРОВАТЬ: Вот очень простой пример method_a и method_b, лишенный всей логики, не связанной с рассматриваемой проблемой.

def method_a 
  throw :some_symbol
end

def method_b
  catch :some_symbol do 
    method_a
  end
end

1 Ответ

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

catch и throw являются методами в ядре, поэтому вы можете ожидать их как обычно:

class SomeClass
  def a
    throw :foo
  end

  def b
    catch :foo do
      a
    end
  end
end

RSpec.describe "" do
  it "" do
    inst = SomeClass.new
    expect(inst).to receive(:throw).with(:foo)
    inst.a
    expect(inst).to receive(:catch).with(:foo)
    inst.b
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...