Я пытаюсь протестировать нить. Предположим, что клиент, место встречи, сообщение находятся в вышеуказанном коде, но было бы очень долго публиковать сообщения. Я пытаюсь проверить переменную «сообщение», но поскольку она не является переменной экземпляра, и она находится в потоке, я не могу ее легко протестировать. Я предполагаю, что обрезание потока будет правильным путем для проверки этого с помощью rspec, но если у вас есть другие предложения о том, как точно проверить переменную «сообщение», которая будет очень полезна. Вот основной вариант того, что я делаю:Как заглушить поток с помощью Rspec?
Class Messages def order_now conf = venue.confirmation_message message = "Hi #{customer.first_name}, " if conf && conf.present? message << conf else message << "your order has been received and will be ready shortly." end Thread.new do ActiveRecord::Base.connection_pool.with_connection do Conversation.start(customer, venue, message, {:from_system => true}) end ActiveRecord::Base.connection_pool.clear_stale_cached_connections! end end end
Спасибо заранее!
Я добавил более подробную информацию к методу, который, как мы надеемся, проливает больше света на тест. Я просто пытаюсь проверить, что если host.confirmation пусто, что «ваш заказ получен и будет готов в ближайшее время». Строка будет перекопана в строку сообщения. Я хотел бы протестировать переменную сообщения, но rspec позволяет тестировать только созданные переменные, такие как @message, поэтому единственный способ проверить ответ - в потоке. Дайте мне знать, что вы думаете, и как вы проверите переменную сообщения с помощью Rspec. Благодаря! – johnfigueiredo
Обновлен мой ответ. –
Это сработало. Спасибо! – johnfigueiredo