Testování a DI – předhození třídě
- motorcb
- Člen | 552
Zdravím, mám následující třídu která potřebuje přístup k DB:
class BaseLoading extends Nette\Object
{
/** @var Model\User */
protected $modelUser;
public function __construct( Model\User $modelUser )
{
$this->modelUser = $modelUser;
}
public function mojeMetodaProOtestovani()
{
return TRUE;
}
}
Na kterou chci napsat test:
<?php
namespace Test;
use App;
use Nette,
Tester,
Tester\Assert;
$container = require __DIR__ . '/bootstrap.php';
class ExampleTest extends Tester\TestCase
{
function testMojeMetoda()
{
//jak vytvořit Model\User $modelUser ????
$fixture = new BaseLoading( $modelUser );
Assert::truthy( $fixture->mojeMetodaProOtestovani() );
}
}
Jak testu vytvořím Model\User $modelUser ???
Díky
- David Matějka
- Moderator | 6445
Na mockovani doporucuju spise mockery :)
@motorcb jestli potrebujes mockovat – pokud chces delat integracni test, tak si vytvor DI kontejner a ty sluzby si nech vytvorit jim. Inspiraci hledej treba v testech u kdyby … databazi bud vytvor sqlite in memory, jako je to u kdyby. Pro slozitejsi databazi je ale asi lepsi si pred spustenim vsech testu vytvorit databazi v mysql, kterou budou sdilet vsechny testy (takze s tim musis pocitat, aby se nemlatily…)
Jestli chces delat unit test, tak si ty zavislosti namockuj. Bud pomoci zmeneneho mockery nebo mockisty, nebo rucne (vytvoris si u testu pozadovanou tridu s namockovanym chovanim…)
Editoval matej21 (31. 12. 2014 13:02)