Пример группы RSpec для веб-приложений - PullRequest
1 голос
/ 08 февраля 2011

Этот вопрос о том, как наилучшим образом назвать группы примеров RSpec и примеры на английском языке.

Я понимаю, что в RSpec describe, context (которые функционально эквивалентны it должны дать вам полные предложения.Так, например,

describe "Log-in controller" do
  context "with logged-in user" do
    it "redirects to root" do
      ...
    end
  end
end

читает Log-in controller with logged-in user redirects to root.Удивительно.

Но в моем приложении, где мне нужно протестировать все компоненты на странице ajaxy (с использованием Capybara), у меня, как правило, есть примеры групп, подобные этой:

describe "blog post" do
  describe "content" do
    it "is displayed"
  end
  describe "comment" do
    it "is displayed"
    describe "editing" do
      it "works"   # successful comment editing
      it "requires logged-in user"  # error case 1
      it "requires non-empty body"  # error case 2
    end
  end
  describe "comment form" do
    it "works"  # successful comment submission
    it "requires valid email address"  # error case 1
    it "requires non-empty body"  # error case 2
  end
end

Я вижу дваанти-паттерны здесь:

  1. Вложенные описания не читаются как предложения.Конечно, можно поставить s:

    describe "blog post" do
      describe "'s content" do
        it "is displayed"
      end
    end
    

    Или поставить двоеточие после «записи в блоге».Или, в идеале, я бы написал

    describe "blog post" do
      its "content" do
        it "is displayed"
      end
    end
    

    , но это невозможно, потому что its относится к доступу к атрибутам, и у меня просто есть строки.

    Есть лилучший способ справиться с проблемой «компонентов страницы»?

  2. Для функциональности успешные случаи (для такой функции, как отправка комментариев) просто помечаются как it "works".По крайней мере, это кратко и просто - я считаю, что это немного предпочтительнее it "can be submitted and causes a comment to be added", потому что это просто заставляет меня придумывать словоблудие к чему-то очевидному.Но есть ли более приятный, более «естественный» способ сделать это?

Предложения по реструктуризации примера группы-примера;) выше приветствуются!

1 Ответ

1 голос
/ 08 февраля 2011

Вы не должны думать о том, чтобы примеры были грамматически правильными. Хорошо, если ваш тест показывает, что «отображается содержимое сообщения блога» без «s». Тест читабелен и прост. Что вы действительно хотите, так это уметь понимать, что не получается, когда тест не работает.

Что касается вашего второго пункта, «это работает», как правило, недостаточно наглядно. Это не дает кому-то другому понять, что вы подразумеваете под «делами». Если вы на самом деле тестируете много вещей, лучше разбить ваши примеры, например:

describe 'blog post' do
  context 'creating a comment' do
    it 'should require a logged-in user'
    it 'should require a non-empty body'
    it 'should require a valid email address'
    it 'should create a new comment'
    it 'should be submittable'
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...