Как написать приложение командной строки в Ruby с RSpec?

77
8

Любая идея, как написать приложение командной строки в ruby ​​с помощью rspec?


Как протестировать диск командой Application.

спросил(а) 2021-01-25T15:42:14+03:00 4 месяца, 4 недели назад
1
Решение
117

Если вы хотите запустить команду, вы можете использовать обратные элементы вокруг команды и вернуть строку:


`ruby /path/to/my_command.rb arg1 arg2`.should == "something"

Но я лично ограничил бы этот стиль тестирования очень ограниченным подмножеством ваших тестов. Это интеграционные тесты, более чем единичные тесты, что не означает, что вы их не должны писать, но сначала вы должны сначала проверить уровень чуть ниже.


Тем не менее, способность тестировать вашу команду на более низком уровне требует структурирования ее таким образом, чтобы легко вывести отдельные единицы. Если ваш script является большим процедурным script, то вы, вероятно, не можете сделать многого, но если он состоит из классов, которые представляют различные команды, которые он будет запускать, вы можете протестировать эти классы, не выполняя команду в оболочке.

ответил(а) 2021-01-25T15:42:14+03:00 4 месяца, 4 недели назад
77

Вы должны посмотреть aruba, что позволяет вам управлять разработкой приложений в командной строке с помощью Cucumber, который, по обложкам, использует RSpec. Он обрабатывает выполнение программ и фиксирует их статус выхода и выхода, что может быть причиной боли, которую нужно делать самостоятельно. В качестве примера:


Given the file "foo.txt" exists
When I successfully execute `cp foo.txt bar.txt`
Then a file named "bar.txt" should exist
And the file "bar.txt" should the same contents as "foo.txt"

Аруба предоставляет вам второй и третий шаги, вы предоставляете другие:

CONTENTS = 'some contents'

Given /^the file "([^"]*)" exists$/ do |file|
File.open(file,'w') { |file| file.puts(CONTENTS) }
end
Then /^the file "([^"]*)" should the same contents as "([^"]*)"$/ do |dest_file,source_file|
contents = File.read(dest_file)
contents.should == CONTENTS
end


Для тестирования приложений в командной строке гораздо сложнее, но аруба - большая помощь.

ответил(а) 2021-01-25T15:42:14+03:00 4 месяца, 4 недели назад
45

Смотреть Ryan Bigg пробник screencast, который дает несколько хороших советов по тестированию, управляя приложением vanilla ruby.

ответил(а) 2021-01-25T15:42:14+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема