Les mocks via injection de dépendances sont souvent difficiles à mettre en place. Même pour les plus simples applications cela nécessite la création de nouvelles interfaces, dépendantes d'un Conteneur IoC, et cela ajoute beaucoup de complexité inutilement. Et après tout ca, vous devrez toujours écrire les mocks eux-mêmes, qui sont rarement nécessaires pour autre chose que de simples tests unitaires.
Des produits comme CA Lisa Service Virtualization offrent une approche alternative. Plutôt que de mocker des classes individuelles, ces outils de tests vous permettent de mocker entièrement des services au niveau réseau. Du point de vue de l'application on communique donc avec un backend, alors qu'en réalité celui-ci n'existe peut être pas encore.
Il y a deux manières communes de mettre en place un service virtuel. La première est de démarrer avec le contrat (WSDL ou un autre descripteur de protocole) et de créer des réponses pré-déterminées. Cela peut se faire manuellement avec du code Java ou .Net, ou vous pouvez utiliser un produit commercial. Un avantage de cette méthode est que l'équipe écrivant le composant n'a pas besoin d'attendre que le service lui-même soit finalisé. Son inconvénient en revanche est que la version réelle doit correspondre à celle étant fausse, rendant cette proposition discutable à cause du temps nécessaire pour la mettre en œuvre.
La seconde possibilité est d'enregistrer le trafic réseau avec un outil positionné entre le composant que l'on teste et ses dépendances en aval. Cet outil agit donc comme un proxy, collectant des informations sur la manière dont interagit le composant. Plus tard ces enregistrements pourront donc être utilisés pour simuler une conversation entre le composant et le serveur dont il dépend.
Les deux possibilités sont viables pour la plupart des protocoles de communication. Avec de bons plugins et de bons filtres, l'outillage de tests devrait être en mesure de comprendre les queues de messages, REST, SOAP, TCP brut, ou d'autres moyens d'échange.