Yii 2: Esiste un tutorial step-by-test al testing con codeception?

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