---
title: 'Тест компонента в OctoberCMS'
url: 'https://graker.ru/news/2017/04/20/octobercms-component-testing'
language: ru
type: post
author: 'Роман Грачев'
published: '2017-04-20T18:00:00+03:00'
updated: '2017-04-20T18:15:37+03:00'
categories:
  - OctoberCMS
  - Программирование
---

# Тест компонента в OctoberCMS

В принципе, тесты в OctoberCMS устроены примерно так же, как и в Laravel. Но поскольку это CMS и у нее есть плагины — к ним можно писать отдельные тесты. Правда, документация по этому вопросу [довольно лаконична](https://octobercms.com/docs/help/unit-testing).

Вот, есть, например, в плагине [компонент](https://octobercms.com/docs/plugin/components) и на него нужно написать тесты. Чтобы это сделать, нам понадобится экземпляр класса компонента, но как его создать? Просто оператором `new` не получается. В общем, решение нашлось (не сразу) в дебрях тестов самого октября, привожу, вдруг кто еще искать будет:

```
$theme = Theme::load('test');
$page = Page::load($theme, 'index.htm');
$layout = Layout::load($theme, 'content.htm');
$controller = new Controller($theme);
$parser = new CodeParser($page);
$pageObj = $parser->source($page, $layout, $controller);
$manager = ComponentManager::instance();
$component = $manager->makeComponent('myComponent', $pageObj);
```

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

Кстати, третьим аргументом в `makeComponent()` можно передать массив свойств компонента. Поможет протестировать логику, когда свойства должны отличаться от дефолтных.
