Ho un libro su Yii 2 che è basato sulla versione beta, purtroppo. Soldi sprecati.
Sin dalle prime pagine si parla di codeception, che mi ritrovo già installato in vendor/yiisoft/yii2-codeception, essendo partito dalla 2.0.3 (ora già "upgradato" alla 2.0.4).
Rispetto alla guida ufficiale [qui] su Codeception e yii 2 , il libro prende una strada completamente diversa, quindi non capisco se, come credo, la guida è ancora un po confusionaria, oppure se, probabile, il libro usa un approccio che già ora non va piu bene.
Sapete se esiste uno step-by-step abbastanza aggiornato su come fare i tre tipi di test di codeception con yii 2?
Per ora ho fatto quanto segue:
Ho installato con composer codeception/codeception.
Davo per scontato che durante l’installazione di yiisoft/yii2-codeception questo provvedessere a richiedere l’installazione del pacchetto principale di codeception ma non è così. Il comando seguente va eseguito dalla webroot dell’app, dove si trova il nostro composer.json
php composer.phar require --dev \
"codeception/codeception=2.0.*" \
"codeception/specify=*" \
"codeception/verify=*" \
"yiisoft/yii2-faker:*"
NB: il backslash (questo “\”) seve come ‘vai a capo, ma il comando continua’. Se usate Windows, scrivete il comando tutto attaccato, non andate a capo ed omettete tutti i ‘\’.
Volendo si potevano installare i tre package di codeception come global, ma mi piacere avere tutto vicino al progetto, e poi così sono certo che quando qualcun’altro tira giu il progetto via .git avrà tutte le dipendenze installate eseguendo composer install . Ovviamente NON installate yii2-faker come global, non avrebbe molto senso.
Ho aggiunto composer al path
Per la precisione ho aggiunto questo path, per lo sviluppo ed il test il locale sto usando xampp
c:\xampp\htdocs\vendor\bin;
Essenso su Winzozz ed avendo aggiunto il path a livello di sistema, ho dovuto riavviare.
Preparazione del db
Attualmente NON so a cosa serve, ma seguendo le istruzioni del file tests/README.md ho creato un db vuoto su localhost chiamato yii2_advanced_tests
Io sono partito dal template avanzato, per cui ho già i ‘primi’ test pronti, almeno mi sembra. Perciò mi trovo la cartella tests/ nella webbroot.
Quello che devo fare ora è eseguire tutte le migrations (le trovate in <webroot>/console/migrations), così che il db di test si trovi allo stesso stato del db di sviluppo. Così su due piedi mi viene un dubbio: non è ridondante? forse la spiegazione risiede nel fatto che i test andrebbero fatti su un ambiente separato, di test appunto.
Il comando da eseguire sarebbe questo:
cd <webroot>/tests/
codeception/bin/yii migrate
Io invece i test li farò in locale. Questo, purtroppo, perchè il mio ambiente di test è su uno shared host, visto che sempre su stesso shared host si troverà l’ambiente di produzione. A questo punto perciò ho pensato di modificare la configurazione di codeception per farlo puntare al mio db di sviluppo in locale. Il file da modificare è <webroot>/tests/codeception/config.php
Build
Sono entrato nella cartella <webroot>/tests/codeception/frontend
Ed ho eseguito, come suggerito dal file tests/README.md, il comando
codecept build
che ha dato come esito
Building Actor classes for suites: acceptance, functional, unit
tests\codeception\frontend\AcceptanceTester includes modules: PhpBrowser, tests\codeception\common\_support\FixtureHelper
AcceptanceTester.php generated successfully. 52 methods added
tests\codeception\frontend\FunctionalTester includes modules: Filesystem, Yii2, tests\codeception\common\_support\FixtureHelper
FunctionalTester.php generated successfully. 64 methods added
tests\codeception\frontend\UnitTester includes modules:
UnitTester.php generated successfully. 0 methods added
Poi ho provato ad eseguire, sempre da <webroot>/tests/codeception/frontend,
codecept run