Ho un metodo di prova che dipende da un altro metodo che si utilizza un provider di dati in PHPUnit:Combinando dipendenze con i fornitori di dati
/**
* @dataProvider getFields
*/
public function testCanDoSomeStuff($parm1, $parm2) {
$result = my_func($parm1, $parm2);
$this->assertNotNull($result);
return $result;
}
/**
* @depends testCanDoSomeStuff
*/
public function testCanDoSomeMoreStuff($result) {
$this->assertNotNull($result);
}
Ho anche una funzione di provider di dati getFields()
, non c'è bisogno di dimostrare che qui.
Il primo test che si basa sul fornitore di dati passa - $result
NON è nullo.
Mi aspetto che il risultato del test venga passato al test dipendente come parametro $result
. Tuttavia, la funzione testCanDoSomeMoreStuff
riceve un parametro NULL
e il test ha esito negativo.
Aggiornamento
Questo semplice test case viene illustrato il problema:
class MyTest extends PHPUnit_Framework_TestCase {
/**
* @dataProvider myFunc
*/
public function testCanDoSomeStuff($value) {
$this->assertNotNull($value);
return $value;
}
/**
* @depends testCanDoSomeStuff
*/
public function testCanDoSomeMoreStuff($value) {
$this->assertNotNull($value);
}
/**
* Data provider function
*/
public function myFunc() {
$values = array('22');
return array($values);
}
}
Come una soluzione, per ora, ho memorizzato il risultato in una proprietà statica tra i test.
Hai provato 'print_r ($ results);' per vedere cosa viene passato a 'testCanDoSomeMoreStuff()'? – uzyn
Ciao Uzyn, sì - null viene passato. Ho anche stampato il risultato della chiamata a "my_func", che non è nullo. – iainp999
Il tuo codice mi sembra a posto. Forse potresti voler condividere il tuo codice attuale, potrebbero esserci degli errori nell'attuale. – uzyn