Этот вопрос о том, как наилучшим образом назвать группы примеров 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
Я вижу дваанти-паттерны здесь:
Вложенные описания не читаются как предложения.Конечно, можно поставить 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
относится к доступу к атрибутам, и у меня просто есть строки.
Есть лилучший способ справиться с проблемой «компонентов страницы»?
Для функциональности успешные случаи (для такой функции, как отправка комментариев) просто помечаются как it "works"
.По крайней мере, это кратко и просто - я считаю, что это немного предпочтительнее it "can be submitted and causes a comment to be added"
, потому что это просто заставляет меня придумывать словоблудие к чему-то очевидному.Но есть ли более приятный, более «естественный» способ сделать это?
Предложения по реструктуризации примера группы-примера;) выше приветствуются!