Il linguaggio di programmazione PHP
 

Class 'Symfony\Bundle\FrameworkBundle\Test\WebTestCase' not found

Simonex 18 Ago 2017 14:30
+ cat SelTest.php
<?php
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

class SelTest extends WebTestCase{
function testAbc(){
$client = static::createClient();

$crawler = $client->request('GET', '/post/hello-world');

$this->assertGreaterThan(
0,
$crawler->filter('html:contains("Hello World")')->count()
);
}
}

+ phpunit SelTest
PHP Fatal error:
Class 'Symfony\Bundle\FrameworkBundle\Test\WebTestCase' not found

Cosa devo installare per usuffruire della classe
Symfony\Bundle\FrameworkBundle\Test\WebTestCase?
Simonex 4 Set 2017 11:44
Il 18/08/2017 14:30, Simonex ha scritto:
> + cat SelTest.php
> <?php
> use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
>
> class SelTest extends WebTestCase{
> function testAbc(){
> $client = static::createClient();
>
> $crawler = $client->request('GET', '/post/hello-world');
>
> $this->assertGreaterThan(
> 0,
> $crawler->filter('html:contains("Hello World")')->count()
> );
> }
> }
>
> + phpunit SelTest
> PHP Fatal error:
> Class 'Symfony\Bundle\FrameworkBundle\Test\WebTestCase' not found
>
> Cosa devo installare per usuffruire della classe
> Symfony\Bundle\FrameworkBundle\Test\WebTestCase?

Niente?
Mi potete suggerire almeno strumenti alternativi per eseguire i test
funzionali.
fmassei@gmail.com 4 Set 2017 20:24
On Monday, September 4, 2017 at 5:44:09 AM UTC-4, Simonex wrote:
> Il 18/08/2017 14:30, Simonex ha scritto:
>> + cat SelTest.php
>> <?php
>> use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
>>
>> class SelTest extends WebTestCase{
>> function testAbc(){
>> $client = static::createClient();
>>
>> $crawler = $client->request('GET', '/post/hello-world');
>>
>> $this->assertGreaterThan(
>> 0,
>> $crawler->filter('html:contains("Hello World")')->count()
>> );
>> }
>> }
>>
>> + phpunit SelTest
>> PHP Fatal error:
>> Class 'Symfony\Bundle\FrameworkBundle\Test\WebTestCase' not found
>>
>> Cosa devo installare per usuffruire della classe
>> Symfony\Bundle\FrameworkBundle\Test\WebTestCase?
>
> Niente?
> Mi potete suggerire almeno strumenti alternativi per eseguire i test
> funzionali.
>

Io non uso Symfony da anni, quindi non ti so dire.
Il più esperto qui sul tema credo sia Alessandro, ma se non ha scritto
si vede che usa metodi differenti.
Personalmente, se vuoi sapere altri metodi, io non uso frameworks ma una
serie di script a volte chiamati in batch, visto che per quello che
sviluppo ha più senso: si scrive e legge più velocemente, e non ho
bisogno di interazione con generatori di documentazione, nel mio caso i
test devono passare tutti, altrimenti niente commit.
Il fatto è che, nella mia esperienza, ogni team di sviluppo si crea il
suo flow con i tools più adatti allo scopo, e che quindi è difficile
trovare un esperto di uno specifico metodo.

Ciao!
Simonex 5 Set 2017 13:17
Il 04/09/2017 20:24, fmassei@gmail.com ha scritto:
> Personalmente, se vuoi sapere altri metodi, io non uso frameworks ma una
> serie di script a volte chiamati in batch, visto che per quello che
> sviluppo ha più senso: si scrive e legge più velocemente, e non ho
> bisogno di interazione con generatori di documentazione, nel mio caso i
> test devono passare tutti, altrimenti niente commit.

Ma sono script scritti in bash o in php?
E per testare JS?
Selenium non è più compatibile con le nuove release di firefox

> Il fatto è che, nella mia esperienza, ogni team di sviluppo si crea il
> suo flow con i tools più adatti allo scopo, e che quindi è difficile
> trovare un esperto di uno specifico metodo.

Quindi i framework non vanno più di moda
fmassei@gmail.com 5 Set 2017 14:26
On Tuesday, September 5, 2017 at 7:17:10 AM UTC-4, Simonex wrote:
> Il 04/09/2017 20:24, fmassei@gmail.com ha scritto:
>> Personalmente, se vuoi sapere altri metodi, io non uso frameworks ma una
>> serie di script a volte chiamati in batch, visto che per quello che
>> sviluppo ha più senso: si scrive e legge più velocemente, e non ho
>> bisogno di interazione con generatori di documentazione, nel mio caso i
>> test devono passare tutti, altrimenti niente commit.
>
> Ma sono script scritti in bash o in php?
>

Entrambi.

> E per testare JS?
> Selenium non è più compatibile con le nuove release di firefox
>

Non lo testo.

>> Il fatto è che, nella mia esperienza, ogni team di sviluppo si crea il
>> suo flow con i tools più adatti allo scopo, e che quindi è difficile
>> trovare un esperto di uno specifico metodo.
>
> Quindi i framework non vanno più di moda
>

Certo, come no. Solo che io sono uno di quelli che non ne usa uno per i
test.

Ciao!
Simonex 5 Set 2017 15:04
Il 05/09/2017 14:26, fmassei@gmail.com ha scritto:
>> E per testare JS?
>> Selenium non è più compatibile con le nuove release di firefox
>>
> Non lo testo.
>

In pratica i tuoi progetti non usano JS?
fmassei@gmail.com 5 Set 2017 15:25
On Tuesday, September 5, 2017 at 9:04:32 AM UTC-4, Simonex wrote:
> Il 05/09/2017 14:26, fmassei@gmail.com ha scritto:
>>> E per testare JS?
>>> Selenium non è più compatibile con le nuove release di firefox
>>>
>> Non lo testo.
>>
>
> In pratica i tuoi progetti non usano JS?
>

Quello su cui sono ora no del tutto.
Ma anche negli ultimi due anni JS l'ho usato solo per scemenzine sul
frontend.

Ciao!
Alessandro Pellizzari 5 Set 2017 18:58
On 05/09/2017 12:17, Simonex wrote:

> E per testare JS?
> Selenium non è più compatibile con le nuove release di firefox

Per testare JS l'unico modo è lanciare un browser headless e fornirgli
comandi.

Non sono intervenuto perché non ho mai usato Symfony. Non ho idea di
come si usino i bundle. :D E, onestamente, penso che ormai siano
obsoleti e che bisognerebbe iniziare a lavorare con pacchetti packagist,
invece che con roba dedicata per ogni framework, altrimenti ti trovi il
pacchetto per Symfony, quello per Laravel, quello per Cake, quello per
Zend, quello per...

Io normalmente usavo Guzzle per scaricare la pagina, e poi DOMQuery per
verificare il contenuto, ma in realtà ho usato poco anche questo. Il
grosso del mio lavoro negli ultimi 2 anni è stato lato API, quindi
testavo direttamente il JSON e i response code.

Bye.
Simonex 5 Set 2017 19:28
Il 05/09/2017 18:58, Alessandro Pellizzari ha scritto:
>
> Per testare JS l'unico modo è lanciare un browser headless e fornirgli
> comandi.
>

In genere cosa si usa? Phantomjs?

> Non sono intervenuto perché non ho mai usato Symfony. Non ho idea di
> come si usino i bundle. :D E, onestamente, penso che ormai siano
> obsoleti e che bisognerebbe iniziare a lavorare con pacchetti packagist,

Quindi anche tu niente FW?
Quindi vai di *composer require...* ?

> Io normalmente usavo Guzzle per scaricare la pagina, e poi DOMQuery per
> verificare il contenuto, ma in realtà ho usato poco anche questo. Il
> grosso del mio lavoro negli ultimi 2 anni è stato lato API, quindi
> testavo direttamente il JSON e i response code.

Cioè?
Perdonami, sono ancora agli inizi :)
fmassei@gmail.com 6 Set 2017 02:14
On Tuesday, September 5, 2017 at 1:28:54 PM UTC-4, Simonex wrote:
> Il 05/09/2017 18:58, Alessandro Pellizzari ha scritto:
>> Non sono intervenuto perché non ho mai usato Symfony. Non ho idea di
>> come si usino i bundle. :D E, onestamente, penso che ormai siano
>> obsoleti e che bisognerebbe iniziare a lavorare con pacchetti packagist,
>
> Quindi anche tu niente FW?
> Quindi vai di *composer require...* ?
>

La "moda" è scegliere un FW minimale o quasi, e usare composer per le
librerie che servono. Ha più senso per la facilità d'utilizzo,
apprendimento più veloce, e leggerezza del codice.

>> Io normalmente usavo Guzzle per scaricare la pagina, e poi DOMQuery per
>> verificare il contenuto, ma in realtà ho usato poco anche questo. Il
>> grosso del mio lavoro negli ultimi 2 anni è stato lato API, quindi
>> testavo direttamente il JSON e i response code.
>
> Cioè?
> Perdonami, sono ancora agli inizi :)
>

Cioè lui ha del PHP e del JS (o webservices, comunque componenti fuori
dal controllo diretto) che "parlano" tramite JSON (che è una *****izzazione
di oggetti JS). Lui scrive PHP e si testa solo le sue richieste/risposte.

Ciao!
Alessandro Pellizzari 6 Set 2017 11:15
On 05/09/2017 18:28, Simonex wrote:

> Il 05/09/2017 18:58, Alessandro Pellizzari ha scritto:
>>
>> Per testare JS l'unico modo è lanciare un browser headless e fornirgli
>> comandi.

> In genere cosa si usa? Phantomjs?

Di solito lascio quel lavoro ai frontender, se posso, ma sì, so che
usavano PhantomJS, almeno per un po'.
Poi ci eravamo messi a scrivere un wrapper attorno a CasperJS e
l'abbiamo messo open source:

https://github.com/DiceHoldingsInc/casperjs-php-driver

(non ci ho lavorato, quindi non ti so dire molto)

> Quindi anche tu niente FW?
> Quindi vai di *composer require...* ?

Ho usato prima Silex (ma senza i Symfony components) e poi Slim.
Sì, tendo a partire da un microframework e costruire sopra.
Di recente sto pensando di eliminare anche i DIC (tipo Pimple) e usare
semplicemente un router e le classi PSR-7. :)

>> Io normalmente usavo Guzzle per scaricare la pagina, e poi DOMQuery
>> per verificare il contenuto, ma in realtà ho usato poco anche questo.
>> Il grosso del mio lavoro negli ultimi 2 anni è stato lato API, quindi
>> testavo direttamente il JSON e i response code.
>
> Cioè?
> Perdonami, sono ancora agli inizi :)

La tendenza degli ultimi anni è di separare completamente la business
logic dalla UI, e farle comunicare tramite messaggi. Il modo più diffuso
e semplice è di usare JSON come protocollo messaggi.

Così puoi fare il "lato server" nel linguaggio che vuoi e servi
semplicemente dati (gestendo l'autenticazione, la formattazione, il
filtraggio, ecc.).

E la UI la fai anche lei nel linguaggio che vuoi, anche se poi il
frontend vero e proprio devi per forza farlo in JS (o Typescript o
qualche altra cosa che transpila in javascript).

Bye.
Simonex 6 Set 2017 19:13
Il 06/09/2017 11:15, Alessandro Pellizzari ha scritto:
>> In genere cosa si usa? Phantomjs?
>
> Di solito lascio quel lavoro ai frontender,

Frontender, cioè un gruppo utenti (o applicazioni) per testare
l'interfaccia utente?

> se posso, ma sì, so che
> usavano PhantomJS, almeno per un po'.
> Poi ci eravamo messi a scrivere un wrapper attorno a CasperJS e
> l'abbiamo messo open source:
>
> https://github.com/DiceHoldingsInc/casperjs-php-driver
>
> (non ci ho lavorato, quindi non ti so dire molto)

<?php //tesr.php
require 'vendor/autoload.php';

$driver = new CasperJs\Driver();
$output = $driver->start('http://someurl.com')
->click('123')
->run();

$ php test.php

...non succede niente.
Ma cmq a cosa serve questo wrapper?

Comunque ho provato anche casperjs:

$ cat casper.js
//casper.js
var casper = require('casper').create();
casper.start('http://casperjs.org/');

casper.then(function() {
this.assertTitle('casper');
this.echo('First Page: ' + this.getTitle());
});

casper.thenOpen('http://phantomjs.org', function() {
this.echo('Second Page: ' + this.getTitle());
this.clickLabel('DOCUMENTATION');
});


casper.run();

$ casperjs casper.js
TypeError: undefined is not a function (evaluating
'this.assertTitle('casper')')
Second Page: PhantomJS | PhantomJS
CasperError: Cannot dispatch mousedown event on nonexistent selector:
xpath selector: //*[text()="DOCUMENTATION"]
Alessandro Pellizzari 7 Set 2017 11:12
On 06/09/2017 18:13, Simonex wrote:

> Il 06/09/2017 11:15, Alessandro Pellizzari ha scritto:

>> Di solito lascio quel lavoro ai frontender,
>
> Frontender, cioè un gruppo utenti (o applicazioni) per testare
> l'interfaccia utente?

Frontender = persona che sviluppa il frontend. Solitamente programmatori
javascript che fanno anche html e css.

>> https://github.com/DiceHoldingsInc/casperjs-php-driver
>>
>> (non ci ho lavorato, quindi non ti so dire molto)
>
> <?php //tesr.php
> require  'vendor/autoload.php';
>
> $driver = new CasperJs\Driver();
> $output = $driver->start('http://someurl.com')
>     ->click('123')
>     ->run();
>
> $ php test.php

Come ho detto, non ci ho lavorato molto, ma il senso è che gli passi le
operazioni da fare (scrolla x, clicca y, aspetta n secondi, ecc.) e alla
fine verifichi che quello che hai in $output corrisponda a quello che vuoi.

> ...non succede niente.
> Ma cmq a cosa serve questo wrapper?

A fare in PHP quello che faresti in javascript con casper. È un wrapper,
appunto. :)

Bye.
Simonex 7 Set 2017 16:49
Il 07/09/2017 11:12, Alessandro Pellizzari ha scritto:
>
>>> https://github.com/DiceHoldingsInc/casperjs-php-driver
>>>
>>> (non ci ho lavorato, quindi non ti so dire molto)
>>
>> <?php //tesr.php
>> require 'vendor/autoload.php';
>>
>> $driver = new CasperJs\Driver();
>> $output = $driver->start('http://someurl.com')
>> ->click('123')
>> ->run();
>>
>> $ php test.php
>
> Come ho detto, non ci ho lavorato molto, ma il senso è che gli passi le
> operazioni da fare (scrolla x, clicca y, aspetta n secondi, ecc.) e alla
> fine verifichi che quello che hai in $output corrisponda a quello che vuoi.
>

+ cat test.php
<?php

require 'vendor/autoload.php';

$driver = new CasperJs\Driver();
$output = $driver->start('http://www.php.net/')
->click( ******* )
->run();

// logging ******* put_contents(
__DIR__.'/output.log',
print_r($output,true)
);

if ( ! strpos($output->getHtml(), 'Old Stable')) {
throw new Exception('Test fallito');
}


+ php test.php
PHP Fatal error: Uncaught Exception: Test fallito in
/mnt/common2/pending/fuctional/test.php:17


Perchè?
Sembra che click( ******* ) non abbia effetto :(

>> ...non succede niente.
>> Ma cmq a cosa serve questo wrapper?
>
> A fare in PHP quello che faresti in javascript con casper. È un wrapper,
> appunto. :)

Cmq non riesco a far funzionare neanche casperjs.
Hai letto l'ultima parte del mio post precedente?
Alessandro Pellizzari 7 Set 2017 17:38
On 07/09/2017 15:49, Simonex wrote:

> $output = $driver->start('http://www.php.net/')
>     ->click( ******* )
>     ->run();

click() non prende del testo qualsiasi, ma dei selettori DOM. Non so se
prenda XPath o selettori alla jQuery. Come ho detto: non ci ho messo mano.

> Cmq non riesco a far funzionare neanche casperjs.
> Hai letto l'ultima parte del mio post precedente?

Sì, ma, come dicevo, non usavo io casperjs. Non ti so aiutare.
Per questo tipo di test forse è meglio chiedere su un gruppo javascript.

Bye.

Links
Giochi online
Dizionario sinonimi
Leggi e codici
Ricette
Testi
Webmatica
Hosting gratis
   
 

Il linguaggio di programmazione PHP | Tutti i gruppi | it.comp.www.php | Notizie e discussioni php | Php Mobile | Servizio di consultazione news.