Sto provando a creare un'istanza fittizia in setUp con i valori predefiniti per tutti i metodi sovrascritti e quindi in diversi test diversi modificare il valore restituito per alcuni dei metodi a seconda di cosa sto testando senza dover impostare il intero Mock. C'è un modo per fare questo?Posso modificare un metodo su PHPUnit Mock dopo averlo impostato?
Questo è quello che ho provato, ma l'approccio ingenuo non funziona. Il metodo restituisce ancora il valore dall'impostazione di attesa originale.
Prima impostazione:
$my_mock->expects($this->any())
->method('one_of_many_methods')
->will($this->returnValue(true));
In un altro test prima di un'assert diversa:
$my_mock->expects($this->any())
->method('one_of_many_methods')
->will($this->returnValue(false));
duplicati per questa domanda: PHPUnit Mock Change the expectations later, ma che uno non ha ottenuto risposte e ho pensato una nuova domanda potrebbe portare il problema in primo piano.
AFAIK sfortunatamente non esiste tale possibilità con phpunit. Puoi usare ad esempio $ my_mock -> __ phpunit_hasMatchers(), ma non è esattamente quello che vuoi. Ovviamente è possibile impostare diversi valori di ritorno sullo stesso metodo con a) "at" matcher o b) "returnCallback" ma essi dipendono da un ordine di invocazione b) parametri di chiamata .. ma non è nemmeno quello che si sta cercando. Ti farò sapere capisco qualcosa di nuovo. – Cyprian
Vedere anche http://stackoverflow.com/questions/5484602/mock-in-phpunit-multiple-configuration-of-the-same-method-with-different-argum/5484864#5484864 – bishop