Предположим, вы тестируете скрипт Ruby, в котором присутствует метод
gets (ввод с клавиатуры) и вы хотите эмулировать ситуацию, когда был введён ответ Y (да). Это довольно просто, если знать, что существует глобальная переменная $stdin - standard input, которая как раз содержит метод gets (хотя, помимо стандартного инпута могут быть другие).Тогда:
allow($stdin).to receive(:gets).and_return('Y')Говорим, что если вызван gets, мы отвечаем "Y".
Ну а дальше вызываем нужный метод в тестах. Можно также проверить, что gets действительно был вызван:
expect($stdin).to have_received(:gets)
Тут даже можно дописать, сколько раз он был вызван, к примеру
expect($stdin).to have_received(:gets).at_most(2).times
То есть не более 2 раз был вызван gets.