I'm learning TDD, and I have a question about private / protected variables. My question is: If a function I want to test is operating on a private variable, how should I test it?
Here is the example I'm working with:
I have a class called Table
that contains an instance variable called internalRepresentation
that is a 2D array. I want to create a function called multiplyValuesByN
that multiplies all the values in the 2D array by the argument n
.
So I write the test for it (in 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]])
Now, if I make internalRepresentation
private or protected, this test will not work. How am I supposed to write the test so it doesn't depend on internalRepresentation
but still tests that it looks correct after calling multiplyValuesByN
?