Как проверить метод чтения каталогов и адресации в ruby? - PullRequest
0 голосов
/ 26 мая 2019

У меня есть класс ruby, чтобы читать каталог и что-то делать для каждого файла.Но я не уверен, как это проверить.

class Scanner
  def scan(dir)
    Dir.glob(File.join(dir, '**', '*')).each do |path|
       verify(path)
    end
  end

  private 

  def verify(path)
    do something for the file...
  end
end

Я хочу провести юнит-тестирование по методу scan.

  • Должен ли я что-то издеваться?
  • Должен ли я предоставить тестовый каталог в spec/fixtures?
  • Какое ожидание?

Приветствия

1 Ответ

0 голосов
/ 26 мая 2019

Есть несколько способов приблизиться к этому.Один (предложенный в комментариях) состоит в том, чтобы разделить проблемы, например,

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 в одном тестовом файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...