Есть несколько способов приблизиться к этому.Один (предложенный в комментариях) состоит в том, чтобы разделить проблемы, например,
class Scanner
def scan(dir)
Dir.glob(File.join(dir, '**', '*')).each do |path|
verify(path)
end
end
private
def verify(path)
Veryfier.new.verify(File.read(path))
# you can test veryfier easily by passing different strings into `verify` method
end
end
и продолжать свою жизнь, поскольку Scanner#scan
уже не так уж сложен, и никто не будет ожидать, что там будет много ошибок.
Но, если по какой-либо причине вы также хотите его протестировать, вы можете выполнить одно из следующих действий:
настроить структуру dir в test/features
иходите по разным каталогам, как по разным случаям.У этого есть один недостаток: вы должны проверять каталоги и читать тесты, чтобы понять тесты.Но это просто сделать.
используйте Dir.tmpdir и File.tmpfile, чтобы настроить структуру dir внутри ваших тестов.Это немного сложнее, но с положительной стороны у вас есть структура и тесты поведения Scanner
в одном тестовом файле.