IT-Expert
  IT-Expert / Веблог / Активно постигая BDD, Cucumber и RSpec
Авторизация
Логин:
Пароль:


 
Поиск по записям:

Ключевые слова:
Записей в блоге
 за 2023 год
 за 2022 год
 за 2021 год
 за 2015 год
 за 2014 год
 за 2013 год
 за 2012 год
 за 2011 год

     за 2010 год

       за 2009 год
       за 2008 год
       за 2007 год
       за 2006 год
       за 2005 год
      RSS лента Лента новостей IT-Expert 

      Активно постигая BDD, Cucumber и RSpec

      20:34, 22 января 2009 ( Ruby Rails  )

      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'

      и вуаля, русский язык у нас в руках.


      Оставить комментарий
      © Максим Прокопов 2005-2024 О сервере