Non vedo errori quando eseguo o collaudo il mio codice localmente. Il mio phpunit
suite di test passa:Errore di classe PHP non trovato SOLO accade su CircleCI
Time: 11.69 seconds, Memory: 43.50Mb
OK, but incomplete, skipped, or risky tests!
Tests: 149, Assertions: 281, Incomplete: 13.
Ma quando spingo lo stesso codice esatto e CircleCI corre lo stesso comando esatto di prova, non riesce con un errore fatale:
.PHP Fatal error: Class 'App\Domain\API\Request\Soap\Json\AbstractJson' not found in /home/ubuntu/TransitScreen/src/Domain/Api/Request/Soap/Json/NJTransit.php on line 10 php ./vendor/bin/phpunit --no-coverage --testsuite=unit returned exit code 255
Ecco la mia circle.yml:
test:
override:
- php ./vendor/bin/phpunit --no-coverage --testsuite=unit
machine:
php:
version: 5.6.5
environment:
APP_ENV: circleci
Il file è riferimento inizia con:
<?php
namespace App\Domain\API\Request\Soap\Json;
use App\Domain\Api\Request\InputApiDataRequest;
use App\Domain\Api\Request\Soap\AsyncSoapClient;
use Assert\Assertion;
class NJTransit extends AbstractJson
{
All'inizio pensavo che CircleCi stesse eseguendo una vecchia versione di PHP senza spazi dei nomi o qualcosa del genere ma anche quando ho impostato su PHP v5.6.5 lo stesso errore si verificava. Ho anche provato ad aggiungere un dump del database nella sequenza di test.
È ancora più strano per me che sia in grado di eseguire diverse dozzine di test prima che si verifichi l'errore. Quindi sono abbastanza sicuro che non sia qualcosa di grossolanamente errato su CircleCI.
Qualche suggerimento sul perché lo stesso codice si comporterebbe in modo così diverso nei due ambienti?
UPDATE 1: Ho trovato questa domanda che sembra molto simile ma che finora il comando del compositore non ha risolto per problema. Laravel - CircleCI - Fails on phpunit
UPDATE 2: ho trovato this question che parla di autoloaging non funziona ... Essa suggerisce una nuova teoria ... Forse c'è un problema che coinvolge le differenze di sensibilità fra caso OSX (mio ambiente locale) e Ubuntu (CircleCI). Qui è il segmento rilevante della mia composer.json
lima:
"autoload": {
"psr-4": {
"App\\": "src"
}
},
"autoload-dev": {
"psr-4": {
"App\\Test\\": "tests",
"Cake\\Test\\": "./vendor/cakephp/cakephp/tests",
"TestApp\\": "tests/TestApp/src",
"TestApp\\Test\\": "tests/TestApp/tests"
}
},
Le persone potrebbero avere più idee se mostri il codice reale che stai utilizzando. – jessica
@jessica Ho aggiunto l'intestazione del file da cui proviene l'errore. Puoi pensare ad altro che sarebbe utile? Non penso che i test unitari effettivi siano rilevanti perché il problema non è un'asserzione fallita, piuttosto il vero errore del codice. – emersonthis