Dit is een optionele opdracht, overleg met je docent of je deze gaat maken.
Lees als je nog niet bekend bent met de concepten van unit testing wat over Unit testing.
We maken gebruik van PHPUnit, de website vind je hier of op de officiele site https://phpunit.de/
Download de laatste versie van de PHPUnit PHAR van de officiele website en installeer deze
Extra voor de installatie op Windows:
Creeer een folder “C:\bin”
Voeg `C:bin;` vooraan toe aan je PATH environment variable (Rechts-klikken op (Mijn computer -> properties -> advanced system settings -> environment settings)
Verplaats de gedownloade PHAR naar C:\bin folder
Open de windows `cmd`en creeer een command script met het volgende commando: echo @php "%dp0phpunit.phar" %* > phpunit.cmd exit
Open een nieuwe windows `cmd` en voer het volgende commando uit, en controleer het versienummer: phpunit --version
Maak unit test classen voor je models en cruds.
Maak hierbij gebruik van zelf gemaakte (gemockte) classen die je met dependency injectie in je crud of model zet. (zie hieronder)
Pas hiervoor je models en crud aan om gebruik te maken van een interface van de (shop/user)crud. (zie hieronder)
Example van een interface voor de shopCrud:
<?php
interface IShopCrud {
function getAllProducts();
// ...
}
Example of a mock of shopCrud:
<?php
class TestShopCrud implements IShopCrud
{
public $sqlQueries = array();
public $arrayToReturn = array();
public function getAllProducts() {
array_push($this->$sqlQueries, "getAllProducts");
return $this->arrayToReturn;
}
...
}
Example of a testsuite voor ShopModel:
<?php
use PHPUnit\Framework\TestCase;
class ShopModelTest extends TestCase
{
public function testPrepWebShop() {
// prepare
$crud= new TestShopCrud(); // <-- create a dummy CRUD
$crud->arrayToReturn = array(1 => $this->createTestProduct(1), // <-- fill the mock object
3 => $this->createTestProduct(3) );
$pageModel = new PageModel(null);
$model = new ShopModel($pageModel, $crud); // <-- This is the object we want to test.
// test</span>
$model->prepWebshop();
// validate</span>
$this->assertNotEmpty($model->products);
$this->assertEqual(1, count($crud->sqlQueries));
$this->assertEqual($crud0->arrayToReturn,$model->products);
}
/**
* Helper function to create a new test
*
* @param int $id the id of the product
* @return a new Product instance.
*/
function createTestProduct($id) {
return new TestProduct($id, "Test".$id, "A Test product", $id * 1.01,"testimage.jpg");
}
// other functions of the ProductModel to test all called "test....."
}
Dit is een optionele opdracht, overleg met je docent of je deze gaat maken.
echo @php "%dp0phpunit.phar" %* > phpunit.cmd
exit
phpunit --version
Example van een interface voor de shopCrud:
Example of a mock of shopCrud:
Example of a testsuite voor ShopModel: