测试使用私有变量的公共方法的最佳实践是什么?

时间:2016-01-28 11:53:10

标签: unit-testing

所以我有一个包含2个公共方法init()和doStuff()的类。 init()设置一个私有变量$ _myPrivVar。 doStuff()方法使用此变量。

为doStuff()编写单元测试时,设置$ _myPrivVar的最佳做法是什么?据推测,我不想使用init()来执行此操作,因为我的单元测试突然测试了2个单元的代码?

这是我现实世界场景的一个人为的版本。

1 个答案:

答案 0 :(得分:2)

首先单元测试中的单元不一定是一种方法 - 它可以是一个类或其他任何方法。

但更重要的是:如果你的函数只依赖于一个参数(你的$_myPrivVar),那么请实现一个将该值作为输入的函数。

如果您确实将所有依赖项都放入输入(也就是创建函数),您将看到这个很容易测试。

如果你愿意,你可以稍后将它包起来 - 但是对于一个论点......不要打扰

另一种方法是为这个变量提供一个公共setter - 大多数语言都有编译器变量/符号/你会称之为(例如C#和#if ...)您甚至可以使用以后从发布版本中删除这些setter。