Как перейти с. TDD в стиле .NET на Ruby?

Я изо всех сил пытался адаптировать свой стандартный подход к тестированию кода .NET на Ruby.

В качестве примера я пишу класс, который:

grab all *.markdown files from a directory
  foreach file:
    extract code samples from file
    save code to file.cs in output directory

Обычно для .NET я получаю что-то вроде:

class ExamplesToCode {
  public ExamplesToCode(IFileFinder finder, IExampleToCodeConverter converter) { ... }
  public void Convert(string exampleDir, string targetDir) { ... }
}

В моем тесте (написанном первым) я имитировал поисковик и конвертер. Затем я бы вырезал finder.FindFiles ("*. Markdown") , чтобы вернуть, скажем, ["file1", "file2"] , и проверить converter.Convert ( "file1", targetDir) и convert.Convert ("file2", targetDir) был вызван.

Я не могу применить это к Ruby из-за того, что Ruby имеет тенденцию использовать блоки и внутренние итераторы (например, array.each {| x | put x} ), а также включать модули вместо внедрения конструктора. Я не уверен, как выполнить модульное тестирование кода в таких случаях (без настройки полного интеграционного теста), а подход .NET кажется невероятно нерубиновым; похоже, это противоречит тому, как естественно работает Ruby.

Есть предложения, как это сделать с помощью Ruby? Хорошим примером будет Ruby-тест для этого примера.

9
задан David Tchepak 9 September 2010 в 18:23
поделиться