hyperf / hyperf/hyperf-skeleton

Dependency injection not working during tests

Aperta
#76 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
PHP
Stelle
306
Fork
130
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

Hello guys. I have a controller called UserController. And i have a UserService that call getById method that returns some object. How can i mock this call when i test UserController?

I tries this code
` /** @var \Hyperf\Di\Container $c */
$c = \Hyperf\Utils\ApplicationContext::getContainer();

$queryServiceMock = $this->createMock(QueryService::class);

$queryServiceMock->method('appByKeyAndDomain')->willReturn((object)[
'id' => 1,
'key' => 'test',
'timezone' => 'UTC'
]);

$c->set(QueryService::class, $queryServiceMock);

\Hyperf\Utils\ApplicationContext::setContainer($c);`

but it would not work.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Inizia con il test di UserController e la configurazione della dependency injection mostrata nell’issue, quindi traccia come viene risolto QueryService durante il test. Riproduci la chiamata al mock fallita e confronta il container utilizzato dal controller con il container che viene modificato. Il lavoro è completato quando il controller riceve il QueryService mockato e il test verifica l’oggetto restituito previsto.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
php
Ambito
backend, testing
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.