Comment devrais-je tester le code suivant?Comment testez-vous une classe référencée qui effectue des opérations internes?
Public Sub SetSerialIdForDevice()
Try
Dim component As Object = container.getComponentRef("componentInterface")
If component IsNot Nothing Then
component.SetupDeviceSerialID(container.serialNumbers)
Else
serialfound = False
End If
Catch ex As Exception
'' error handling
End Try
End Sub
Les références de projet (ou les composants comme on les appelle ici) sont chargées à l'exécution dans un 'conteneur' singleton. Nous appelons le composant qui s'interface avec un périphérique en utilisant le container.getComponentRef("< name of component we're looking for >")
. Nous invoquons ensuite une méthode sur ce composant pour définir l'identifiant série, qui est stocké dans une propriété de l'objet conteneur.
Dans la méthode SetupDeviceSerialID(), nous appelons les propriétés natives du conteneur (comme s'il s'agit d'un mode de débogage interne) ainsi que d'autres objets. Quelle serait la meilleure façon de tester ce scénario où nous avons des objets dans des objets? Serions-nous moquer tous les appels, propriétés et objets afin d'isoler le test de SetupDeviceSerialID()?
Ou est-ce que nous nous moquons du 'componentInterface'
retourné et simulons l'appel pour SetupDeviceSerialID()
, puis testez les propriétés qui ont été modifiées dans SetupDeviceSerialID()
?
EDIT
J'ai pensé à tester ce mal (évidemment) et par les réponses que je me suis rendu compte que je cherchais à entasser des tests pour les méthodes exécutées plus profondément dans le code, dans les tests pour la méthode SetSerialIdForDevice().
Ainsi, en conséquence, Si un serialID se trouve, nous fixerait serialfound = true
à l'intérieur de SetupDeviceSerialID().
Est-ce quelque chose que nous tester ici (puisque nous allons tester pour serialfound=false
), ou dans un test pour SetupdDeviceSerialID()? Et allons-nous créer un test pour voir si SetupDeviceSerialID() existe réellement sur le composant "componentInterface"?