I’ve been trying to make model tests with with fixtures, but I’m not able to load the records into the fixtures.
I’m using MySQL, I have a separate schema called “test_booking” which has empty tables corresponding to the production db. I’ve baked a fixture and model file with: “cake bake fixture Status” and “cake bake test table Status” which yielded the files below.
<?php
declare(strict_types=1);
namespace App\Test\Fixture;
use Cake\TestSuite\Fixture\TestFixture;
/**
* StatusFixture
*/
class StatusFixture extends TestFixture
{
/**
* Fields
*
* @var array
*/
// phpcs:disable
public $fields = [
'id' => ['type' => 'integer', 'length' => null, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'autoIncrement' => true, 'precision' => null],
'type' => ['type' => 'string', 'length' => 45, 'null' => false, 'default' => null, 'collate' => 'latin1_swedish_ci', 'comment' => '', 'precision' => null],
'date' => ['type' => 'string', 'length' => 45, 'null' => false, 'default' => null, 'collate' => 'latin1_swedish_ci', 'comment' => '', 'precision' => null],
'start_time' => ['type' => 'string', 'length' => 5, 'null' => false, 'default' => '', 'collate' => 'latin1_swedish_ci', 'comment' => '', 'precision' => null],
'service_id' => ['type' => 'integer', 'length' => null, 'unsigned' => false, 'null' => false, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null],
'date_created' => ['type' => 'timestamp', 'length' => null, 'precision' => null, 'null' => false, 'default' => 'CURRENT_TIMESTAMP', 'comment' => ''],
'date_modified' => ['type' => 'timestamp', 'length' => null, 'precision' => null, 'null' => false, 'default' => 'CURRENT_TIMESTAMP', 'comment' => ''],
'manned_by' => ['type' => 'integer', 'length' => null, 'unsigned' => false, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null],
'text' => ['type' => 'string', 'length' => 10000, 'null' => false, 'default' => '', 'collate' => 'latin1_swedish_ci', 'comment' => '', 'precision' => null],
'active' => ['type' => 'boolean', 'length' => null, 'null' => false, 'default' => '1', 'comment' => '', 'precision' => null],
'_constraints' => [
'primary' => ['type' => 'primary', 'columns' => ['id'], 'length' => []],
],
'_options' => [
'engine' => 'InnoDB',
'collation' => 'latin1_swedish_ci'
],
];
// phpcs:enable
/**
* Init method
*
* @return void
*/
public function init(): void
{
$this->records = [
[
'id' => 1,
'type' => 'Lorem ipsum dolor sit amet',
'date' => 'Lorem ipsum dolor sit amet',
'start_time' => 'Lor',
'service_id' => 1,
'date_created' => 1590634027,
'date_modified' => 1590634027,
'manned_by' => 1,
'text' => 'Lorem ipsum dolor sit amet',
'active' => 1,
],
];
parent::init();
}
}
<?php
declare(strict_types=1);
namespace App\Test\TestCase\Model\Table;
use App\Model\Table\StatusTable;
use Cake\Datasource\ConnectionManager;
use Cake\ORM\TableRegistry;
use Cake\TestSuite\TestCase;
/**
* App\Model\Table\StatusTable Test Case
*/
class StatusTableTest extends TestCase
{
/**
* Test subject
*
* @var \App\Model\Table\StatusTable
*/
protected $Status;
/**
* Fixtures
*
* @var array
*/
protected $fixtures = [
'app.Status',
];
/**
* setUp method
*
* @return void
*/
public function setUp(): void
{
parent::setUp();
$config = TableRegistry::getTableLocator()->exists('Status') ? [] : ['className' => StatusTable::class];
$this->Status = TableRegistry::getTableLocator()->get('Status', $config);
}
/**
* tearDown method
*
* @return void
*/
public function tearDown(): void
{
unset($this->Status);
parent::tearDown();
}
/**
* Test getStatus method
*
* @return void
*/
public function testGetStatus(): void
{
$status = $this->Status->getStatus(1);
print_r($status);
exit;
$this->markTestIncomplete('Not implemented yet.');
}
}
But running the tests which executes the testGetStatus() returns en empty array, instead of the record specified in the fixture. What am I doing wrong?
Aucun commentaire:
Enregistrer un commentaire