Ich habe kürzlich eine Pull- Anfrage an Magento gesendet, um eine einzelne Instanz eines Objektmanagers zu reparieren, der direkt verwendet wird.
Der Testlauf der Travis-Einheit von Magento schlug jedoch mit dem folgenden Fehler fehl .
Schwerwiegender PHP-Fehler: Aufruf der undefinierten Methode Mock_BlockFactory_4b440480 :: create () in /home/travis/build/magento/magento2/app/code/Magento/Cms/Controller/Adminhtml/Block/Delete.php in Zeile 39
Anhand des Travis-Builds kann ich nicht einmal sagen, welcher Test fehlgeschlagen ist. Ich konnte lokal einen ähnlichen (identischen?) Fehler mit einem Stack-Trace erhalten
PHP Fatal error: Call to undefined method Mock_BlockFactory_ec77572c::create() in /Users/alanstorm/Documents/github/astorm/magento2/app/code/Magento/Cms/Controller/Adminhtml/Block/Delete.php on line 39
PHP Stack trace:
PHP 1. {main}() /Users/alanstorm/Documents/github/astorm/magento2/vendor/phpunit/phpunit/phpunit:0
PHP 2. PHPUnit_TextUI_Command::main() /Users/alanstorm/Documents/github/astorm/magento2/vendor/phpunit/phpunit/phpunit:55
PHP 3. PHPUnit_TextUI_Command->run() /Users/alanstorm/Documents/github/astorm/magento2/vendor/phpunit/phpunit/src/TextUI/Command.php:132
PHP 4. PHPUnit_TextUI_TestRunner->doRun() /Users/alanstorm/Documents/github/astorm/magento2/vendor/phpunit/phpunit/src/TextUI/Command.php:179
PHP 5. PHPUnit_Framework_TestSuite->run() /Users/alanstorm/Documents/github/astorm/magento2/vendor/phpunit/phpunit/src/TextUI/TestRunner.php:426
PHP 6. PHPUnit_Framework_TestSuite->run() /Users/alanstorm/Documents/github/astorm/magento2/vendor/phpunit/phpunit/src/Framework/TestSuite.php:675
PHP 7. PHPUnit_Framework_TestCase->run() /Users/alanstorm/Documents/github/astorm/magento2/vendor/phpunit/phpunit/src/Framework/TestSuite.php:675
PHP 8. PHPUnit_Framework_TestResult->run() /Users/alanstorm/Documents/github/astorm/magento2/vendor/phpunit/phpunit/src/Framework/TestCase.php:753
PHP 9. PHPUnit_Framework_TestCase->runBare() /Users/alanstorm/Documents/github/astorm/magento2/vendor/phpunit/phpunit/src/Framework/TestResult.php:686
PHP 10. PHPUnit_Framework_TestCase->runTest() /Users/alanstorm/Documents/github/astorm/magento2/vendor/phpunit/phpunit/src/Framework/TestCase.php:817
PHP 11. ReflectionMethod->invokeArgs() /Users/alanstorm/Documents/github/astorm/magento2/vendor/phpunit/phpunit/src/Framework/TestCase.php:951
PHP 12. Magento\Cms\Test\Unit\Controller\Adminhtml\Block\DeleteTest->testDeleteAction() /Users/alanstorm/Documents/github/astorm/magento2/vendor/phpunit/phpunit/src/Framework/TestCase.php:951
PHP 13. Magento\Cms\Controller\Adminhtml\Block\Delete->execute() /Users/alanstorm/Documents/github/astorm/magento2/app/code/Magento/Cms/Test/Unit/Controller/Adminhtml/Block/DeleteTest.php:151
Ich konnte den lokalen Fehler auf diesen Test eingrenzen - aber ich bin ein bisschen ratlos, was los ist.
Ich vermute, dass das Test-Framework automatisch ein DI-Argument für mich verspottet hat, aber dass beim automatischen Verspotten die create
Methode fehlt . Wenn das der Fall ist, dann ist meine eigentliche Frage Wie füge ich ein Mock für eine neu injiziert Abhängigkeit im Test - Framework von Magento .
Ich bin jedoch noch nie so tief in Magentos Testkaninchen gegangen, daher bin ich mir nicht sicher, was hier tatsächlich passieren muss. Kann mich jemand mit Magento-Testerfahrung klarstellen?
create
, genau wie hier .