我正在学习 TDD,我有一个关于私有/受保护变量的问题。我的问题是:如果我要测试的函数在私有变量上运行,我应该如何测试它?
这是我正在使用的示例:
我有一个名为的类Table
,它包含一个名为的实例变量internalRepresentation
,它是一个二维数组。我想创建一个函数multiplyValuesByN
,将 2D 数组中的所有值乘以参数n
。
所以我为它编写了测试(在 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]])
现在,如果我将internalRepresentation
其设为私有或受保护,则此测试将不起作用。我应该如何编写测试,以便它不依赖internalRepresentation
但仍然测试它在调用后看起来是否正确multiplyValuesByN
?