Voglio sapere se esiste una soluzione su come testare un tratto di PHP.Come testare i tratti PHP
So che possiamo testare una classe che utilizza il tratto. ma mi stavo chiedendo se ci sono approcci migliori.
Grazie per qualsiasi consiglio in anticipo :)
EDIT
Un'alternativa è quella di utilizzare il Trait nella classe di test in sé, come ho intenzione di dimostrare a soffietto.
Ma non `m che appassionato di questo approccio poiché non v'è alcuna garanzia che non ci sono i nomi dei metodi simili tra il tratto, la classe e anche il PHPUnit_Framework_TestCase (in questo esempio):
Ecco un esempio tratto:
trait IndexableTrait
{
/** @var int */
private $index;
/**
* @param $index
* @return $this
* @throw \InvalidArgumentException
*/
public function setIndex($index)
{
if (false === filter_var($index, FILTER_VALIDATE_INT)) {
throw new \InvalidArgumentException('$index must be integer.');
}
$this->index = $index;
return $this;
}
/**
* @return int|null
*/
public function getIndex()
{
return $this->index;
}
}
e la sua prova:
class TheAboveTraitTest extends \PHPUnit_Framework_TestCase
{
use TheAboveTrait;
public function test_indexSetterAndGetter()
{
$this->setIndex(123);
$this->assertEquals(123, $this->getIndex());
}
public function test_indexIntValidation()
{
$this->setExpectedException(\Exception::class, '$index must be integer.');
$this->setIndex('bad index');
}
}
Si prega di fornire il codice che avete tentato di fare questo con la quale non funziona. Questo aiuterà qualcuno a aiutarti. –
@AdamB, ho scritto io stesso [la prima risposta] (http://stackoverflow.com/a/31083193/4960774), che ha un codice di esempio. ma per favore notate che non è come se qualcosa fosse rotto o non funzionasse, voglio solo sapere se ci sono dei buoni metodi per testare i tratti del test direttamente e non indirettamente tramite un'unità testando una classe che usa quel tratto. carri armati – Ali