2013-09-04 24 views
21

Ho scritto alcuni test API con ApiGuy di Codeception. Ora voglio impostare i breakpoint nel mio PhpStorm 7 per il debug dei test, ma non ho idea di come avviare la sessione di debug dopo $ vendor/bin/codecept run. Conosco l'opzione --debug, ma non è esattamente quello che voglio.Debug dei test di Codeception con Xdebug

Avete qualche idea? Grazie in anticipo!

+0

Votate per il supporto codeception in PhpStorm https://youtrack.jetbrains.com/issue/WI-16350 – Nicklasos

risposta

26

Mi sono imbattuto nello stesso problema. Sembra che Codeception venga fornito solo con lo strumento comandi, che non può essere sottoposto a debug. Alla fine ho finito per scrivere il mio runner PHP, che è fondamentalmente una copia lite dell'eseguibile del comando codeception.

In realtà tutto quello che dovresti fare in Linux è rimuovere lo shebang dallo strumento codeception per eseguirlo come script PHP. Ma poiché i comandi diversi da codeception run sono molto meno soggetti a debug, ho preparato uno script PHP separato. Esso contiene solo l'opzione run:

<?php 
/** 
* Codeception PHP script runner 
*/ 

require_once dirname(__FILE__).'/../vendor/codeception/codeception/autoload.php'; 

use Symfony\Component\Console\Application; 

$app = new Application('Codeception', Codeception\Codecept::VERSION); 
$app->add(new Codeception\Command\Run('run')); 

$app->run(); 

Dopo aver ottenere questo fatto è possibile impostare il debug di script come qualsiasi altro in PhpStorm. Quindi, andare al Select Run/Debug Configuration>Edit Configurations...:

Edit Configurations...

Ora Add New Configuration (Alt + Inssert)>PHP Script. Quindi denominare la configurazione dell'esecuzione e selezionare il file creato in precedenza. Ricordarsi di aggiungere l'argomento run:

enter image description here

E questo è tutto. Ora è possibile eseguire i test dall'interno di IDE e eseguirne il debug come normali script.

+0

Wow, grazie mille, funziona come un fascino! Ho specificato anche la directory di lavoro personalizzata nella root del progetto per evitare eccezioni di configurazione. –

+0

Funziona anche con NetBeans, grazie! –

+0

Questo funziona. Per la risoluzione dei problemi di chiunque altro, prova a inserire il file 'run.php' che crei nella stessa directory del tuo' codeception.yml'. ha funzionato per me – Chris

17

Uso il file codecept.phar e trovo che questo funzioni. basta digitare il seguente comando nella console e quindi eseguire il test codeception:

export XDEBUG_CONFIG="idekey=session_name remote_host=localhost profiler_enable=1" 
+3

È se si utilizza una scorciatoia di script batch – Tominator

+0

Ciò funzionerà anche quando si utilizza un server remoto per eseguire la codeception. Devi solo specificare un diverso remote_host in quella linea di esportazione. – ROunofF

+2

Questa è semplicemente la risposta corretta ;-) cli debugging – Gizzmo

0

non credo che è effettivamente necessario uno script in più per eseguire il debug Codeception almeno in PhpStorm. Non credo che lo faresti anche in altri IDE. Puoi impostare codecept.phar come "File" nella tua configurazione mostrata nella risposta di Maciej Sz ed eseguirlo come faresti con qualsiasi altro script da PHPStorm, Eclipse, ecc.

In PHPStorm crei un nuovo debug PHP Script configurazione che punta a codecept.phar come "File". Imposta gli argomenti come configurazione di base dell'esecuzione (ad esempio, esegui l'accettazione --group mygroup --env myenv), ma dillo a "Mostra questa pagina" ogni volta che vuoi eseguire il debug. È quindi possibile modificare quale test/gruppo/ambiente si sta eseguendo ogni volta per eseguire il test con i punti di interruzione.

Quando si fa clic sul pulsante di debug dal pop-up, il test di accettazione inizia nella console del debugger.

L'esecuzione iniziale che raggiunge un punto di interruzione sarà nella fase di convalida in cui Codeception tenta di assicurarsi che il codice venga eseguito prima di eseguirlo. La seconda esecuzione avverrà quando il test sta effettivamente utilizzando Selenium o qualsiasi altra configurazione. Questo ti permetterà di vedere cosa c'è nella memoria, scavalcare le cose in maniera controllata, ecc.

0

Un altro modo è quello di configurare PhpStorm, come sopra, ma impostare bin/cept per File, run per Argomenti, e la radice del vostro progetto come directory di lavoro personalizzato.

4

Vorrei suggerire di utilizzare

php -dxdebug.remote_enable=1 -dxdebug.remote_autostart=On -dxdebug.idekey=YOUR_KEY -dxdebug.remote_host=YOUR_IP ../vendor/bin/codecept run 
Problemi correlati