Инструменты для юнит-тестирования в Magento

23

Что вы используете для модульного тестирования в Magento? Или что вы знаете о модульном тестировании и Magento? Независимо от того, занимаетесь ли вы TDD или вам просто нужно иметь покрытие модульных тестов для компонентов вашего проекта, вам нужны некоторые инструменты для этого.

Первый базовый подход заключается в использовании простого phpunit, но есть вещи, которые требуют дополнительных уловок, чтобы сделать Magento «тестируемым».

Все, с чем я работал, связано с phpunit:

Есть ли другие варианты?

FlorinelChis
источник

Ответы:

14

Проверьте PHPSpec с MageSpec, если вы хотите что-то не на основе PHPUnit, а с некоторой интеграцией Magento. Его можно использовать, но он не совсем готов к прайм-тайм. Для насмешки PHPSpec 2 использует Prophecy (что замечательно), но совсем не любит магические добытчики и сеттеры. По этой причине лучше использовать вместо этого Mockery , который прекрасно работает (и мне это тоже очень нравится).

Тогда есть также Behat с BehatMage для BDD с Magento. Стоит взглянуть, но это не помогает, например, если вы хотите протестировать разные представления магазина в разных доменах.

Существует также расширение BehatMage под названием MageBehat (ужасное название!), Которое появилось в результате хакатона. Он предоставляет множество специфичных для Magento действий для BehatMage, но, честно говоря, некоторые из используемых обходных путей являются скорее хаком, чем реальным решением основных проблем. Тем не менее, его можно использовать.

Я надеюсь, что оба проекта - MageSpec и BehatMage - будут процветать в будущем.

Vinai
источник
Спасибо, Винай, за ваш ответ. Я знаю о BehatMage и о работе, проделанной командой в Inviqa / Session Digital (мне неясно, какова их структура компании) ... Я искал только материал phpunit, Behat / BehatMage мне не очень понравился, я играл с MageSpec некоторое время назад.
FlorinelChis
Английский не мой родной язык, подробности, которые я предоставил, могли бы быть более ясными. Я делаю некоторые исследования для лондонской группы пользователей Magento - декабрьская встреча.
FlorinelChis
4

PHPUnit - это то, что использует Magento 2. Вот пример файла на GitHub. https://github.com/magento/magento2/blob/master/dev/tests/unit/testsuite/Magento/Captcha/Helper/DataTest.php . (Я выбрал этот файл наугад.) Возможно, вы захотите быстро взглянуть на подход к тестированию Magento 2, чтобы все, что вы делаете сейчас, было совместимо с Magento 2 после его выпуска.

Алан Кент
источник
Я не думаю, что OP говорит о Magneto 2 здесь.
Мариус
3

Вы должны пойти с EcomDev PHPUnit .

Я лично считаю, что все разработчики Magento должны стремиться к последовательному решению модульного тестирования. EcomDev предоставляет наиболее часто используемые и наиболее зрелые из этих фреймворков, так что у вас уже есть приличный пул разработчиков с опытом в этом. Использование единого фреймворка также снижает необходимость установки разных фреймворков.

Однако в EcomDev PHPUnit есть странное соглашение о размещении тестов непосредственно вместе с рабочим кодом. К счастью, это легко решается путем изменения нескольких строк кода. EcomDev также не торопится с обновлениями (хотя их репозиторий Github показывает признаки активности, поэтому они явно все еще живы).

Тайский фан
источник
Итак, говоря все это, есть ли где-нибудь репозиторий с набором определенных модульных тестов (использующих ecomdev_unittest), который тестирует функциональность ядра? (Я знаю, что MTAF делает это, но есть ли где-нибудь заранее определенные модульные тесты?)
ProxiBlue
1
@ProxiBlue Нет, я не знаю ни одного. Это довольно хорошая идея для общественного проекта.
Тай Фан
2

Для юнит-тестирования лучше всего подходит EcomDev PHPUnit.

Может быть, вы хотите попробовать функциональное тестирование на Magento? Пример с casperjs: https://github.com/jacquesbh/hackathon-casperjs/

Жак Бодин-Халлин
источник
1
был другой вопрос по этому поводу.
FlorinelChis