Verwenden einer STD -Klasse anstelle eines MocksPhp

PHP-Programmierer chatten hier
Anonymous
 Verwenden einer STD -Klasse anstelle eines Mocks

Post by Anonymous »

Ich hatte einige Situationen, in denen ... < /p>

[*] Ich kann kein normales Mock verwenden, da das zu verwendende Objekt hart codiert ist (dh verwendet neue Somename () < /code>, anstatt Abhängigkeitsinjektionsarten zu verwenden). [und ...] < /li>
Ich kann den Alias ​​von Spott nicht verwenden: oder Überlastung: Mocks, weil die Klasse bereits geladen wurde. [und ...]
Ich kann Laravels Fassade nicht verwenden, weil die Klasse keine Fassade ist. Klasse. < /p>
Ein Problem damit ist - es sei denn, es handelt sich um einen Laravel -Alias ​​- ich kann kein partielles Verspotten simulieren, daher muss meine Klasse alle Funktionen definieren, die aufgerufen werden, und nicht nur die, die ich verspotten möchte. (Wenn es sich um einen Laravel -Alias ​​handelt, der verspottet wird, kann ich einfach die reale Klasse erweitern, aber das funktioniert nicht normal.)class someTest extends TestCase {

publicfunction firstTest(){
class_alias(Support_Class_Mock::class, 'SupportClass');

//// rest of test code here

}
}

class Support_Class_Mock extends \App\SupportClass

{
public static function oauthGetAccessToken($beep,$boop){
return 'OAuth Successful';
}
}
< /code>
Meine Frage: < /strong>
Ist das, was ich akzeptable "Last Resort" -Praxis mache? (Oder gibt es einen besseren Weg?)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post