Задаем структуру теста

describe и context

Здравствуйте!

В прошлом письме мы говорили о том, что правила и структура в тестах помогает читать и воспринимать их. Сегодня поболтаем о том, как структурировать тесты с помощью describe и context.

Структура теста

Структура — каркас теста, отражающий его логику. Без структуры читать тест сложно: повествование скачет, внимание блуждает, поиск связанных проверок бесит. Сравните:

# Без структуры
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 для задания структуры тестов. Благодаря хорошей, явно выраженной структуре, читатель легко охватывает и воспринимает тесты.

Ещё почитать-посмотреть

Домашнее задание

Исправьте тесты. Срок — до 8 часов следующего понедельника. Кроме того, поищите и пришлите пример теста без адекватной структуры: vasily@polovnyov.ru.

Шестое письмо написал после просмотра «Коммандо». Let off some steam, Bennett

Отписаться