所以我有一个包含2个公共方法init()和doStuff()的类。 init()设置一个私有变量$ _myPrivVar。 doStuff()方法使用此变量。
为doStuff()编写单元测试时,设置$ _myPrivVar的最佳做法是什么?据推测,我不想使用init()来执行此操作,因为我的单元测试突然测试了2个单元的代码?
这是我现实世界场景的一个人为的版本。
答案 0 :(得分:2)
首先单元测试中的单元不一定是一种方法 - 它可以是一个类或其他任何方法。
但更重要的是:如果你的函数只依赖于一个参数(你的$_myPrivVar
),那么请实现一个将该值作为输入的函数。
如果您确实将所有依赖项都放入输入(也就是创建纯函数),您将看到这个很容易测试。
如果你愿意,你可以稍后将它包起来 - 但是对于一个论点......不要打扰
另一种方法是为这个变量提供一个公共setter - 大多数语言都有编译器变量/符号/你会称之为(例如C#和#if
...)您甚至可以使用以后从发布版本中删除这些setter。