<?php
namespace Project\Named;
trait NamedTrait
{
/**
* Table name
*
* @var string
*/
protected $name;
public function __construct(string $name)
{
$this->setName($name);
}
public function getName(): string
{
return $this->name;
}
protected function setName(string $name): void
{
$this->name = $name;
}
}
<?php
namespace Project;
use Project\Named\NamedTrait;
class Table
{
use NamedTrait {
NamedTrait::__construct as protected namedConstruct;
}
public function __construct($name)
{
$this->namedConstruct($name);
}
}
<?php
use PHPUnit\Framework\TestCase;
use Project\Table;
class TableTest extends TestCase
{
const TABLE_NAME_TEST = 'test';
/**
* @dataProvider providerTable
*/
public function testTable(Table $table)
{
$this->assertInstanceOf(\Project\Table::class, $table);
$this->assertEquals(self::TABLE_NAME_TEST, $table->getName());
}
public function providerTable()
{
new Table(self::TABLE_NAME_TEST)
)
);
}
}
Dla
NamedTrait::setName(string $name): void
dostaję błąd:
Cytat
The data provider specified for TableTest::testTable is invalid.
Return value of HaruDb\Table::setName() must be an instance of HaruDb\Named\void
, none returned
Jeśli zmienię zwracany typ na null, to dostaję komunikat z pierwszego postu.
Podałem informację o namespace HaruDb - taki jest namespace po przeróbkach kodu.
Cytat
Time: 40 ms, Memory: 4.00MB
There was 1 warning:
1) Warning
The data provider specified for TableTest::testTable is invalid.
Return value of Project\Table::setName() must be an instance of Project\Named\vo
id, none returned
WARNINGS!
Tests: 1, Assertions: 0, Warnings: 1.