Le test unitaire signifie-t-il que le test doit être raillé ou que la définition du test unitaire peut être sans moquerie?Est-ce que Unit Test signifie que le test doit être raillé?
Par exemple ci-dessous, ce test est raillé, il est donc test unitaire:
/**
* @test
*/
public function it_should_return_true_if_ssh_client_is_connected()
{
$this->phpSecLibShh->shouldReceive('isConnected')->andReturn(true)->once();
$this->assertTrue($this->shell->connected($this->phpSecLibShh));
}
exemple ci-dessous, est ce test unitaire ou Test d'intégration? Je ne suis pas clair à ce sujet:
/**
* @test
*/
public function it_should_get_half_price_discount()
{
$cost = 50;
$order = new Order();
// It does not connect to database or any other service
$discounted = $order->discount(Order::DISCOUNT_HALF_PRICE, $cost);
$this->assertEquals(25, $discounted);
}
Non selon la [définition du test unitaire] de Martin Fowler (https://martinfowler.com/bliki/UnitTest.html) ... Pour lui (et Kent Beck, créateur de JUnit et TDD), en test unitaire le Les unités testées ne doivent pas nécessairement être isolées de leurs dépendances. Personnellement, je pense que les tests unitaires isolés sont généralement une mauvaise idée et doivent être évités. –
@ Rogério J'apprécie votre commentaire. Les tests unitaires sont quelque chose que nous exécutons un certain nombre de fois. Si nous changeons une ligne de code d'événement, nous pouvons exécuter le test unitaire pour nous assurer que les changements n'ont pas affecté la logique fonctionnelle écrite jusqu'ici. Maintenant, pensez que dans votre logique d'entreprise votre logique métier vous appelez un service web payant externe.Si vous ne vous moquez pas de ce service, vous finirez par payer de l'argent chaque fois que vous effectuerez le test unitaire. Je suis d'accord avec les tests devraient être isolés, mais il devrait isoler de la dépendance aussi bien. L'isolement signifie une unité de code. –
Bien sûr, lorsque vous appelez «des collaborateurs maladroits (comme un système de vérification de carte de crédit à distance)» comme mentionné dans l'article de Fowler, il est logique de se moquer de lui. De telles situations, cependant, devraient être l'exception plutôt que la norme, et très rares dans la plupart des bases de code du monde réel. Le problème avec les bibliothèques moqueuses est que les développeurs inexpérimentés ont tendance à en abuser beaucoup (ainsi qu'à en abuser, étant donné leur complexité inhérente). Je sais cela de l'expérience de développer une bibliothèque moqueuse depuis 12 ans maintenant, tout en soutenant les utilisateurs tout ce temps et de voir les erreurs qu'ils font si fréquemment. –