yii2
analisi
Ricerca…
Configurare l'ambiente di test
Installa Codeception:
composer global status
composer global require "codeception/codeception=~2.0.0" "codeception/specify=*" "codeception/verify=*"
Installa Faker:
cd /var/www/yii // Path to your application
composer require --dev yiisoft/yii2-faker:*
Creare un database, che verrà utilizzato solo per i test. È possibile duplicare il database esistente o applicare le migrazioni:
cd tests
codeception/bin/yii migrate
Regola la configurazione dei components['db']
nei tests/codeception/config/config-local.php
.
Aggiungi la directory /var/www/yii/vendor/bin
al tuo percorso.
Esamina tutti i file di configurazione e .yml
.
Avvia il server web, ad esempio:
php -S localhost:8080
Esegui i test:
codecept run
Maggiori informazioni:
- http://www.yiiframework.com/doc-2.0/guide-test-environment-setup.html
- http://codeception.com/install
- https://github.com/yiisoft/yii2-app-basic/tree/master/tests
- https://github.com/yiisoft/yii2-app-advanced/tree/master/tests
Nota: queste istruzioni sono valide per la versione 2.0.9 di Yii2. Nella versione 2.0.10 sarà secondo Sam Dark la parte di test rielaborata (e le istruzioni devono essere aggiornate). La versione 2.0.10 dovrebbe essere rilasciata l'11 settembre 2016: https://github.com/yiisoft/yii2/milestones
Come deridere ActiveRecord
Se vuoi prendere in giro AR che non prova a connettersi al database puoi farlo nel modo seguente (se usi PHPUnit):
$post = $this->getMockBuilder('\app\model\Post')
->setMethods(['save', 'attributes'])
->getMock();
$post->method('save')->willReturn(true);
$post->method('attributes')->willReturn([
'id',
'status',
'title',
'description',
'text'
]);
Il problema è che dobbiamo sovrascrivere il metodo attributes () poiché ActiveRecord di default sta ottenendo l'elenco degli attributi dallo schema del database che stiamo cercando di evitare.