hyperf / hyperf/hyperf-skeleton
Dependency injection not working during tests
- 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