J'apprends le TDD et j'ai une question sur les variables privées/protégées. Ma question est: Si une fonction que je veux tester fonctionne sur une variable privée, comment dois-je la tester?Développement piloté par les tests: Rédaction de tests pour les variables privées/protégées
Voici l'exemple que je travaille avec:
J'ai une classe appelée Table
qui contient une variable d'instance appelée internalRepresentation
qui est un tableau 2D. Je veux créer une fonction appelée multiplyValuesByN
qui multiplie toutes les valeurs dans le tableau 2D par l'argument n
.
J'écrire le test pour elle (en Python):
def test_multiplyValuesByN (self):
t = Table(3, 3) # 3x3 table, filled with 0's
t.set(0, 0, 4) # Set value at position (0,0) to 4
t.multiplyValuesByN(3)
assertEqual(t.internalRepresentation, [[12, 0, 0], [0, 0, 0], [0, 0, 0]])
Maintenant, si je fais privé ou protégé internalRepresentation
, ce test ne fonctionnera pas. Comment suis-je supposé écrire le test de sorte qu'il ne dépend pas de internalRepresentation
mais teste toujours qu'il semble correct après avoir appelé multiplyValuesByN
?
... également connu sous le nom d'Arrange-Act-Assert (mais sans correspondance allitérative pour Teardown - devinez que c'est une bonne chose qu'il n'est pas très utilisé!) –
Oui, c'est pourquoi je l'ai mis entre parenthèses. C'est une de ces choses pratiques qui sont parfois nécessaires mais qui ne cadrent pas bien dans la théorie. J'aime l'allitération 3-A. Je n'ai pas entendu ça avant, merci! –