JastaFly
@JastaFly

PHPunit и Битрикс?

Нужно протестировать один из компонентов Битрикса при помощи PHPunit. Как проинициализировать ядро Битрикса для использования методов includeComponent и похожих?
  • Вопрос задан
  • 114 просмотров
Решения вопроса 1
JastaFly
@JastaFly Автор вопроса
Я таки смог инициализировать ядро Битрикса в bootstrap.php:
<?php

define("NOT_CHECK_PERMISSIONS", true);
define("NO_AGENT_CHECK", true);

$_SERVER["DOCUMENT_ROOT"] = realpath(dirname(__FILE__) . "/../../");

require_once($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
require_once($_SERVER["DOCUMENT_ROOT"] . "/vendor/autoload.php");

function initBitrixCore()
{
    global $DB;
    $app = \Bitrix\Main\Application::getInstance();
    $con = $app->getConnection();
    $DB->db_Conn = $con->getResource();
    $_SESSION["SESS_AUTH"]["USER_ID"] = 1;
}

Vamp спасибо за ответы))
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Vamp
@Vamp
Я так понимаю, вы хотите написать юнит тесты на стандартный компонент битрикса.

Если код компонента изначально не проектировался с расчетом на юнит тесты, то ничего не выйдет и вам нужно вместо юнит писать интеграционные тесты, для чего больше подходит codeception.

Если коротко, codeception эмулирует браузер и тесты пишутся в стиле "зайти на эту страницу, заполнить форму вот такими данными, нажать на вон ту кнопку, убедиться, что на следующей странице присутствует строчка операция выполнена успешно".

Если же компонент ваш, то нужно спроектировать код таким образом, чтобы максимум логики, не завязанной на внешние элементы (фс, база, ядро битрикса, другие компоненты и т.п.), было выделено в отдельные классы, объекты которых можно без особых сложностей создавать в юнит тестах и тестировать логику изолированно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы