我是单位测试的新手。 我的测试环境是Laravel上的PHPUnit。
我想知道如何通过PHPUnit对一个方法进行单元测试有多个call protected / private方法吗?
这些受保护/私有方法不仅会返回预期值,还会在失败时抛出异常。
重要的问题是:如果我想测试method2或method3 throwsexception,我需要传递prev protected / private方法(method1或method1 + method2),这样可以吗?或者更好的主意?
答案 0 :(得分:0)
如果您倾向于让私有方法抛出公共方法无法捕获的异常,那么它们必须抛出自定义异常而不是通用\Exception
(这实际上是一种很好的做法)。那么在测试中你可以期望抛出自定义异常。
然后一般来说,我认为构造函数本身在设计方面更好地检查args的存在,如果公共方法总是被调用,或者公共方法进行那些检查,那么只是在构造时抛出。它会限制投掷的数量。
PHPUnit作者关于测试私有方法的想法 - https://sebastian-bergmann.de/archives/881-Testing-Your-Privates.html