Features. Это прекрасно!
Продолжая тему BDD следует отметить, что story runner выпочковался в отдельный фреймворк под названием Cucumber (огурец).
Теперь истории выглядят так:
мой реальный пример из features/admin_artices.feature
Функционал: Админ может добавлять, удалять и изменять статьи
Что бы админ мог управлять статьями
Как администратор сайта
Я должен иметь возможность удалять, добавлять и изменять статьи
Как пользователь
Я должен видеть отредактированные статьи
Сценарий: добавление новой статьи
Сначала admin is logged in as nexus
И can view article list in admin zone
Если I create new article title bbb
То user should see it in the articles list /articles/my-new-article
Сценарий: редактирование существующей статьи
Сначала admin is logged in as nexus
Если admin edit article foo and save content blabla
То user should see blabla at url /articles/foo
Сценарий: удалить существующую статью foo
Сначала admin is logged in as nexus
И статья с url foo доступна пользователю
Если админ удаляет статью с урл foo
То юзер в списке статей не видит ссылку на статью foo
Ну и шаги (steps)
require 'spec/expectations'
require 'cucumber/formatters/unicode'
Given /^can view article list in admin zone$/ do
get admin_articles_url
response.should be_success
end
When /^I create new article title bbb$/ do
visit new_admin_article_url
fill_in "article[title]", :with=>'bbb'
fill_in "article[body]", :with=>'article ccc body'
fill_in "article[url]", :with=>'my-new-article'
click_button "Создать статью"
assert_contain('bbb')
end
Then /^user should see it in the articles list (.*)$/ do |article|
visit article
assert_contain('article ccc body')
end
When /^admin edit article (.*) and save content (.*)$/ do |url, content|
visit edit_admin_article_url(Article.find_by_url(url))
fill_in 'article[body]', :with=>content
click_button "Сохранить статью"
response.should be_success
end
Then /^user should see (.*) at url (.*)$/ do |content, url|
visit url
assert_contain content
end
Given /^статья с url (.*) доступна пользователю$/ do |url|
visit "/articles/#{url}"
response.should be_success
end
When /^админ удаляет статью с урл (.*)$/ do |url|
delete admin_article_url(Article.find_by_url(url))
end
Then /^юзер в списке статей не видит ссылку на статью (.*)$/ do |url|
visit "/articles"
assert_not_contain "foo"
end
Удивительно то, что теперь истории вполне можно писать на родном языке!
Что бы задействовать такой функционал в rake features и autotest следует для
autotest прописать в cucubmer.yml
Features. Это прекрасно!
Продолжая тему BDD следует отметить, что story runner выпочковался в отдельный фреймворк под названием Cucumber (огурец).
Теперь истории выглядят так:
Функционал: Админ может добавлять, удалять и изменять статьи
Что бы админ мог управлять статьями
Как администратор сайта
Я должен иметь возможность удалять, добавлять и изменять статьи
Как пользователь
Я должен видеть отредактированные статьи
Сценарий: добавление новой статьи
Сначала admin is logged in as nexus
И can view article list in admin zone
Если I create new article title bbb
То user should see it in the articles list /articles/my-new-article
Сценарий: редактирование существующей статьи
Сначала admin is logged in as nexus
Если admin edit article foo and save content blabla
То user should see blabla at url /articles/foo
Сценарий: удалить существующую статью foo
Сначала admin is logged in as nexus
И статья с url foo доступна пользователю
Если админ удаляет статью с урл foo
То юзер в списке статей не видит ссылку на статью foo
Удивительно то, что теперь истории вполне можно писать на родном языке!
Что бы задействовать такой функционал в rake features и autotest следует для
autotest прописать в cucubmer.yml
default: --format pretty -l ru features
html_report: -l ru --format progress --format html --out=public/features.html features
autotest: -l ru features
и в lib/tasks/cucumber.rake
$:.unshift(RAILS_ROOT + '/vendor/plugins/cucumber/lib')
require 'cucumber/rake/task'
Cucumber::Rake::Task.new(:features) do |t|
t.cucumber_opts = "--format pretty -l ru"
end
task :features => 'db:test:prepare'
и вуаля, русский язык у нас в руках.
Оставить комментарий