2012-06-03 3 views
0

Я пишу команду командной строки, но хочу, чтобы она была TDD. Я буду создавать и удалять файлы, и мне было интересно, есть ли тестовый камень для песочницы или что-то в этом роде. Я использую ruby ​​и rspec.среды тестирования тестовой среды существуют для приложения командной строки TDD'ing

+0

Что заставляет вас сказать, что вы не можете использовать RSpec для командной строки приложения? –

+0

Извините, я написал свой вопрос в спешке. я имел в виду попросить любую среду SANDBOX для TDD. меняя вопрос. Прости. – Brand

+0

Не уверен, что именно вы ищете - что бы вам предоставили «песочницу из песочницы»? Ю. уже может читать/писать файлы. –

ответ

2

В зависимости от того, что вы пытаетесь сделать, но я тестирую большую часть своей командной строки Ruby, издеваясь над файловой системой и STDIN/STDOUT. Использование инъекции зависимостей я часто в конечном итоге с чем-то вдоль этих линий:

describe Add do 
    it 'writes the result to standard out' do 
    console = mock('STDOUT') 
    console.should_receive(:puts).with('5') 

    Add.new(console).execute(3,2) 
    end 
end 

class Add 
    def initialize(out = STDOUT) 
    @out = out 
    end 

    def execute(command_line_args) 
    @out.puts(command_line_args.inject(:+)) 
    end 
end 

Add.new.execute(ARGS) 

При использовании значения по умолчанию можно вводить в тесте, но оставить его из кода производства.

Надеюсь, что это поможет!

Brandon

0

Шаблон, вырабатываемая генератором newgeminstall_cucumber использует шаблон, который мне нравится совсем немного. Посмотрите на поддержку/env.rb и поддержки/common.rb файлов создает:

Использование его в тесте выглядит следующим образом:

in_tmp_folder do 
    # The current directory is now a generated tmp folder. 
    # If you stick to relative paths, everything you do in here should be safe 
end 

Файлы, ссылки на которые приведены выше, предназначены для использования в тестах огурца, но они могут быть легко адаптированы к любой используемой структуре. ENV.rb выше удаляет папку tmp перед началом каждого теста.

Смежные вопросы