Questa domanda è stata intorno un po 'senza risposte, ma mi sono imbattuto in questo stesso problema. Questo non sembra possibile; tuttavia, c'è almeno una sporca work-around:
Nel file di test
<?php
class SomeClass {
const FOOBAR = 'foobar';
}
class SomeTest extends PHPUnit_Framework_TestCase {
public function setUp() {
$mock = $this->getMock('SomeClass');
}
}
// tests
?>
Poi, si utilizza l'oggetto preso in giro per la funzionalità deriso, e si utilizza la classe costante allo stesso modo si avrebbe in origine . Per esempio:
// Call a method on mocked object
// (would need to add this method to your mock, of course)
$mock->doSomething();
// Use the constant
$fooBar = SomeClass::FOOBAR;
Questa è sporca, quindi sono sicuro che le cose potrebbero ottenere abbastanza incasinato se si sta utilizzando una sorta di caricamento automatico che cerca di caricare la classe reale SomeClass
, ma questo funzionerà "bene" se non stai caricando l'originale SomeClass
.
Sono decisamente interessato ad ascoltare altre soluzioni oltre a ricevere un feedback su quanto sia veramente sporco.
La classe Reflection avrebbe realizzato ciò che volevi? http://php.net/manual/en/book.reflection.php –