Как организовать структуру спеков в проекте с использованием PHPSpec?

Пользователь

от marisa , в категории: PHP , 8 месяцев назад

Как организовать структуру спеков в проекте с использованием PHPSpec?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jakayla , 8 месяцев назад

@marisa 

При организации структуры спеков в проекте с использованием PHPSpec, рекомендуется следующий подход:

  1. Создайте папку "Specs" внутри вашего проекта. В этой папке будут храниться все спеки.
  2. Создайте подпапку для каждого класса, для которого вы хотите написать спеки. Например, если у вас есть класс "User", создайте папку "User" внутри папки "Specs".
  3. В каждой папке класса создайте два файла: ClassNameSpec.php и ClassNameSpecTrait.php. Например, для класса "User" создайте файлы "UserSpec.php" и "UserSpecTrait.php". Файл "ClassNameSpec.php" будет содержать сам спек, а файл "ClassNameSpecTrait.php" - вспомогательный Trait, который можно использовать для повторного использования кода в разных спеках.
  4. В файле "ClassNameSpec.php" напишите спеки для функциональности класса. Создайте методы с префиксом "it_" для каждого поведения, которое вы хотите проверить. Например, если вы хотите проверить, что метод "getUserById" возвращает объект типа "User" при правильном входном параметре, создайте метод "it_returns_User_object_when_valid_id_is_passed".
  5. В файле "ClassNameSpecTrait.php" напишите вспомогательные методы, которые можно использовать в спеке. Это может включать создание объектов тестирования, проведение предварительных настроек для тестов и т.д.
  6. Запустите PHPSpec для выполнения спеков. При запуске PHPSpec будет автоматически искать спеки в папке "Specs" и выполнять их.


Пример структуры папок и файлов:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
project/
├─ Specs/
│  ├─ User/
│  │  ├─ UserSpec.php
│  │  └─ UserSpecTrait.php
│  └─ Product/
│     ├─ ProductSpec.php
│     └─ ProductSpecTrait.php
├─ src/
│  ├─ User.php
│  └─ Product.php
└─ ...


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

Пользователь

от nicolette.stoltenberg , 7 месяцев назад

@marisa 

Организация структуры спеков (тестов) в проекте с использованием PHPSpec может быть следующей:

  1. Создайте директорию для спеков внутри директории вашего проекта. Это может быть директория "spec" или "tests".
  2. Внутри директории спеков создайте поддиректории, соответствующие структуре кода вашего проекта. Например, если ваш проект имеет структуру MVC, то создайте директории "spec/Models", "spec/Controllers" и т. д.
  3. В каждой директории создайте спек-файлы для каждого класса вашего проекта. Например, если у вас есть класс "User" в директории "Models", создайте спек-файл "UserSpec.php" в директории "spec/Models".
  4. В спек-файлах определите тестовые методы, которые проверяют функциональность соответствующих классов. Например, для класса "User" может быть метод "it_should_return_correct_user_name".
  5. Импортируйте необходимые классы и методы PHPSpec в спек-файлы.
  6. Запустите спеки с помощью команды "phpspec run" в командной строке.
  7. PHPSpec автоматически находит и запускает все спеки в директории спеков и выводит результаты выполнения тестов.


Например, структура директорий спеков может выглядеть следующим образом:

  • spec Models UserSpec.php Controllers HomeControllerSpec.php


Содержимое спек-файла "UserSpec.php" может выглядеть следующим образом:

1
2
3
4
beConstructedWith('John Doe');
        $this->getName()->shouldReturn('John Doe');
    }
}


После запуска PHPSpec командой "phpspec run" вы увидите результаты выполнения тестов и можете использовать эту структуру для организации спеков в вашем проекте.