Структура теста
Структура — каркас теста, отражающий его логику. Без структуры читать тест сложно: повествование скачет, внимание блуждает, поиск связанных проверок бесит. Сравните:
# Без структуры
it "#accessible_projects return all system projects when user is admin"
it "returns no projects when user is not admin"
it "returns user full name with email"
# С describe и context
describe "#accessible_projects" do
context "when user is admin" do
it "returns all system projects"
context "when user is NOT admin" do
it "returns no projects"
describe "#user_name_with_email" do
it "returns user full name with email in parens"
describe и context
И describe , и context объединяют связанные проверки. Я использую describe для сущностей (кто, что?), а context для состояний (когда, с чем, с какими условиями?). Так легче ориентироваться в возможных ситуациях и исследовать условия.
# Так себе
context "associations"
context "#full_name"
describe "when user is admin"
describe "with valid params"
# Хорошо
describe "associations"
describe "#full_name"
context "when user is admin"
context "with invalid params"
Контексты начинаются со слов when, with, given, if. Если они присутствуют в описании проверки, вытаскивайте:
# Плохо: условие, описание ситуации (user is editor) тяжело заметить
it "returns only published posts when user is not editor"
it "returns published and draft posts when user is editor"
# Хорошо: ситуация явно обозначена контекстом
context "when user is editor" do
it "returns published and draft posts"
context "when user is NOT editor" do
it "returns only published posts"
Вложенные контексты начинайте с and, чтобы было ясно, что это не все условие:
context "when user is editor" do
context "and post is published" do
it "displays post views/visitors count"
Используйте describe и context для задания структуры тестов. Благодаря хорошей, явно выраженной структуре, читатель легко охватывает и воспринимает тесты.
Ещё почитать-посмотреть
|