8

Sono in esecuzione la versione più recente di Codeception su una piattaforma WAMP - La mia accettazione è molto semplice, ma funziona bene (vedi sotto):Codeception - Prove di accettazione funzionano, ma Test funzionale Non

$I = new WebGuy($scenario); 
$I->wantTo('Log in to the website'); 
$I->amOnPage('/auth/login'); 
$I->fillField('identity','[email protected]'); 
$I->fillField('password','password'); 
$I->click('Login'); 

In poche parole - Controlla che la pagina sia 'auth/login' compila 2 campi modulo e fa clic sul pulsante di accesso. Funziona senza problemi.

Ecco il mio identico test funzionale:

$I = new TestGuy($scenario); 
$I->wantTo('perform actions and see result'); 
$I->amOnPage('/auth/login'); 
$I->fillField('identity','[email protected]'); 
$I->fillField('password','password'); 
$I->click('Login'); 

Quando eseguo questo dalla riga di comando ottengo il seguente errore (non la piena errore, ma abbastanza per capire il problema):

1) Couldn't <-[35;1mperform actions and see result<- 
[0m in <-[37;1LoginCept.php<-[0m <-41;37mRuntimeException: 
Call to undefined method TestGuy::amOnPage<-[0m....... 

La mia suite di accettazione dispone di moduli 'PhpBrowser' & 'WebHelper' abilitati, la suite funzionale ha 'FileSystem' & 'TestHelper' abilitato (all'interno dei file functional.suite.yml admission &).

Ovviamente la funzione amOnPage() è il problema, tuttavia sono convinto che amOnPage() dovrebbe funzionare in test di accettazione e di funzionalità? O mi sbaglio - anche - qualcuno può spiegare cosa significano i numeri ad esempio '< - [35; 1m' che appaiono

UPDATE: Ho provato ad aggiungere il modulo 'WebHelper' al functional.suite.yml ma non lo faccio vedere l'amOnPage() generato automaticamente nel file TestGuy.php - qualche idea?

I miei file di configurazione sono al di sotto:

webguy

class_name: WebGuy 
modules: 
enabled: 
    - PhpBrowser 
    - WebHelper 
config: 
    PhpBrowser: 
     url: 'http://v3.localhost/' 

TestGuy

class_name: TestGuy 
modules: 
enabled: [Filesystem, TestHelper, WebHelper] 

risposta

9

Bene, questo è così, a causa di TestGuy non hanno quei metodi. Tutti questi metodi sono nei moduli PhpBrowser, Selenium2 o altri che ereditano dall'implementazione di Codeception Mink. Quindi è necessario aggiungere PhpBrowser nella suite funzionale nella sezione dei moduli, quindi eseguire il comando codecept build.

Si noti inoltre che è preferibile utilizzare il modulo Selenium2 per il test di accettazione e PhpBrowser per i test funzionali. L'idea principale è che i test di accettazione (Selenium2) devono coprire quelle parti della tua applicazione, che non possono essere coperte da test funzionali (PhpBrowser), ad esempio alcune interazioni js.

+0

Grazie @Elkan ho aggiunto 'PhpBrowser' al mio file functional.suite.yml ed eseguire il comando 'codecept costruire' e ricevere un "modulo di PhpBrower Il modulo PhpBrowser non è configurato. Controlla i campi richiesti Tutte le idee su quello che faccio da qui? – Zabs

+0

Nota .. Sto usando CodeIgniter .. e ho scoperto che non esiste un modulo per questo ancora in questo momento :( – Zabs

+0

sì, nessun modulo per CI disponibile per ora, ma usa PhpBrowser per i test funzionali, la differenza di velocità non è tanto quando usa PhpBrowser (basato su curl) e il modulo nativo framework (basato sul browser-kit di symfony).Torna all'errore, è necessario configurare PhpBrowser, vedere i documenti del modulo sul sito di codeception :) – Elkan

-1

Chi '<-[35;1m' script di avvio codecept run --no-colors per rimuovere '<-[35;1m' dall'uscita della console