Scrivo felicemente test di unità, ma si scontrano quando li eseguo tutti insieme. Sto testando questa classe:PHPUnit: include classe dopo averlo deriso
class MyClass {
public function sayHello() {
return 'Hello world';
}
}
utilizzando questo test. Tutti i test hanno una struttura come questa:
class MyClassTest extends PHPUnit_Framework_TestCase {
private $subject;
public static function setUpBeforeClass() {
require_once('path/to/MyClass.php');
}
public function setUp() {
$this->subject = new MyClass();
}
public function testSayHello() {
$this->assertEquals('Hello world', $this->subject->sayHello());
}
}
MyClassTest
corre benissimo da sè. Ma PHPUnit sarà incidente perché ho ridichiarare classe, se un altro test schernisce MyClass
e capita di eseguire prima:
class Inject {
private $dependency;
public function __construct(MyClass $myClass) {
$this->dependency = $myClass;
}
public function printGreetings() {
return $this->dependency->sayHello();
}
}
class InjectTest extends PHPUnit_Framework_TestCase {
public function testPrintGreetings() {
$myClassMock = $this
->getMockBuilder('MyClass')
->setMethods(array('sayHello'))
->getMock();
$myClassMock
->expects($this->once())
->method('sayHello')
->will($this->returnValue(TRUE));
$subject = new Inject($myClassMock);
$this->assertEquals('Hello world', $subject->printGreetings());
}
}
faccio usare un bootstrap.php di falsificare alcune funzioni globali non ancora refactoring.
Non ho caricatori automatici e non voglio elaborare-isolare OGNI test, perché ci vuole per sempre. Ho provato ad inserire combinazioni @runTestsInSeparateProcesses
e/disabilitato nei docblocks di entrambi Test 1 & 2, ho ancora lo stesso errore.
è necessario fornire un esempio riproducibile. – hek2mgl
Perché stai configurando la tua simulazione tramite un'istruzione 'require_once' invece di usare la corretta funzionalità di simulazione usando l'API di Mock Builder? Leggi questo: https://phpunit.de/manual/current/en/test-doubles.html # test-doubles.mock-objects –
@ hek2mgl, spero che questo esempio sia migliore. – PeerBr