Как проверить темы - PullRequest
       34

Как проверить темы

0 голосов
/ 23 октября 2018

У нас есть потоки:

module Task
  def self.execute
    "result"
  end
end

threads = []
threads << Thread.new { Task.execute }

Нам нужно указать тест, который проверяет результат:

expect(Task.execute).to eq("result")

Мы добавили поток внутри потока:

threads << Thread.new do
  deep_thread = Thread.new { Task.execute }
  deep_thread.join
end

Как мы можем проверить результат вызовов методов внутри потока?Как мы можем проверить, что два потока завершены, а также проверить результат deep_thread?

1 Ответ

0 голосов
/ 23 октября 2018

Проверьте результаты вызовов методов отдельно вне логики потока.

Затем протестируйте логику создания потока отдельно с помощью чего-то вроде:

let(:thread) { double }
it 'creates threads' do
  expect(Thread).to receive(:new).exactly(5).times.and_return(thread)
  expect(thread).to receive(:join).exactly(5).times.and_return(true)
  expect(Task).to receive(:execute).exactly(5).times.and_return("xyz")
  expect(subject.execute).to eq "xyz"
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...