Ошибка при попытке запустить тест PHPUnit Magento 2 - PullRequest
0 голосов
/ 15 мая 2018

Я создал простой тест Hello World Magento 2, когда я пытаюсь запустить тест, я получаю следующую ошибку:

Неустранимая ошибка: Объявление Magento \ Framework \ TestFramework \ Unit \ Listener \ReplaceObjectManager :: startTest (PHPUnit \ Framework \ Test $ test) должен быть совместим с PHPUnit_Framework_TestListener :: startTest (PHPUnit_Framework_Test $ test) в / Applications / MAMP / htdocs / mag221 / vendor / magento / framework / TestFramework / UnitO ListenerMject и прослушивать.php в строке 14

Это phpunit.xml.dist

<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/6.2/phpunit.xsd" colors="true" beStrictAboutTestsThatDoNotTestAnything="false" bootstrap="./framework/bootstrap.php">
   <testsuite name="Magento Unit Tests">
      <directory suffix="Test.php">../../../TestStore/Checkout/HelloMessage/Test/Unit</directory>
   </testsuite>
   <php>
      <ini name="date.timezone" value="America/Los_Angeles" />
      <ini name="xdebug.max_nesting_level" value="200" />
      <ini name="memory_limit" value="-1" />
   </php>
   <filter>
      <whitelist addUncoveredFilesFromWhiteList="true">
         <directory suffix=".php">../../../app/code/*</directory>
         <directory suffix=".php">../../../lib/internal/Magento</directory>
         <directory suffix=".php">../../../setup/src/*</directory>
         <exclude>
            <directory>../../../app/code/*/*/Test</directory>
            <directory>../../../lib/internal/*/*/Test</directory>
            <directory>../../../lib/internal/*/*/*/Test</directory>
            <directory>../../../setup/src/*/*/Test</directory>
         </exclude>
      </whitelist>
   </filter>
   <listeners>
      <listener class="Magento\Framework\TestFramework\Unit\Listener\ReplaceObjectManager" />
   </listeners>
   <logging />
</phpunit>

HelloMessageTest.php

<?php
namespace TestStore\HelloMessage;
use TestStore\HelloMessage;



class HelloMessageTest extends \PHPUnit_Framework_TestCase
{
    /**
     * @var HelloMessage
     */
    protected $helloMessage;

    public function setUp()
    {
        $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
        $this->helloMessage = $objectManager->getObject('Magestore\HelloMagento\Model\HelloMessage');
        $this->expectedMessage = 'Hello Magento 2! We will change the world!';
    }

    public function testGetMessage()
    {
         $this->assertEquals($this->expectedMessage, $this->helloMessage->getMessage());
    }
}

Я использую PHP 7.1.12, Magento 2.2.1.

Есть идеи, что может быть причиной этого?

1 Ответ

0 голосов
/ 16 мая 2018

Прежде всего создайте класс HelloMessage \app\code\TestStore\Hello\Model\HelloMessage.php

<?php
namespace TestStore\Hello\Model;

class HelloMessage
{
    public function getMessage()
    {
        return 'Hello Magento 2! We will change the world!';
    }
}

Создать модель UnitTest \app\code\TestStore\Hello\Test\Unit\Model\HelloMessageTest.php

<?php
namespace TestStore\Hello\Test\Unit\Model;

use TestStore\Hello\Model\HelloMessage;

class HelloMessageTest extends \PHPUnit_Framework_TestCase
{
    /**
     * @var HelloMessage
     */
    protected $helloMessage;

    public function setUp()
    {
        $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
        $this->helloMessage = $objectManager->getObject('TestStore\Hello\Model\HelloMessage');
        $this->expectedMessage = 'Hello Magento 2! We will change the world!';
    }

    public function testGetMessage()
    {
         $this->assertEquals($this->expectedMessage, $this->helloMessage->getMessage());
    }
}

Теперь вам нужно добавить UnitTest в phpunit.xml с помощью

<testsuite name="Magento Unit Tests">
    <directory suffix="Test.php">../../../app/code/TestStore/Hello/Test/Unit</directory>
</testsuite>

, затем просто запустите модульный тест из консоли в папке magento

Для справки вы также можете проверить Как написать модульный тест в Magento 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...