Maison >développement back-end >tutoriel php >Comment les tests unitaires PHP et l'injection de dépendances fonctionnent ensemble

Comment les tests unitaires PHP et l'injection de dépendances fonctionnent ensemble

WBOY
WBOYoriginal
2024-05-06 17:24:01434parcourir

Dependency Injection (DI) améliore la testabilité des tests unitaires en injectant des dépendances simulées dans une classe au lieu de les créer ou de les trouver dans la classe elle-même. Le framework PHPUnit fournit une puissante bibliothèque d'assertions et un testeur qui prend en charge les tests complexes à l'aide de DI. En injectant des dépendances simulées, nous pouvons nous concentrer sur le test de la logique réelle sans nous soucier des détails d'implémentation des dépendances réelles.

PHP 单元测试与依赖注入的协同工作

Les tests unitaires PHP et l'injection de dépendances travaillent ensemble

L'injection de dépendances (DI) est un modèle de conception qui permet d'injecter des dépendances dans une classe au lieu de les créer ou de les trouver dans la classe elle-même. Cela rend le code plus facile à tester puisque les dépendances simulées peuvent être facilement injectées dans les tests.

PHPUnit est un framework populaire pour les tests unitaires PHP. Il fournit une puissante bibliothèque d'assertions et divers testeurs pour prendre en charge des scénarios de test complexes.

Cas pratique

Considérons l'exemple de code suivant :

class UserService
{
    private $userRepository;

    public function __construct(UserRepository $userRepository)
    {
        $this->userRepository = $userRepository;
    }

    public function createUser(array $data)
    {
        // ... 创建用户
    }
}

class UserRepository
{
    public function find($id)
    {
        // ... 查找用户
    }
}

En utilisant DI, nous pouvons tester UserService en injectant une instance de UserRepository dans le constructeur :UserRepository 的实例来测试 UserService:

class UserServiceTest extends TestCase
{
    public function testCreateUser()
    {
        $userRepository = $this->createMock(UserRepository::class); // 模拟依赖项
        $userRepository->expects($this->once())
            ->method('find')
            ->with('123'); // 期望的依赖项调用

        $userService = new UserService($userRepository);
        $userService->createUser(['name' => 'John Doe']);

        $this->assertTrue(true); // 断言测试通过
    }
}

通过使用 DI 和模拟依赖项,我们可以轻松地测试 UserServicerrreee

En utilisant DI et des dépendances moqueuses, nous pouvons facilement tester UserService sans créer une véritable instance UserRepository. Cela rend le test plus robuste et fiable.

Conclusion

Les tests unitaires PHP et l'injection de dépendances fonctionnent ensemble pour améliorer considérablement la testabilité du code. En injectant des dépendances simulées, nous pouvons nous concentrer sur le test de la logique réelle sans nous soucier des détails d'implémentation des dépendances réelles. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn