2016-07-21 95 views
1

我是单元测试新手。 我的测试环境是Laravel上的PHPUnit。如何通过phpunit单元测试一个方法具有多内部调用保护/私有方法?

我想知道如何通过PHPUnit单元测试一个方法有多重调用protected/private方法?

这些protected/private方法不仅返回期望值,而且在失败时也抛出异常。

example.phpExampleTest.php

重要的问题是:如果我想测试method2或method3的throwsexception,我需要传递prev protected/private方法(method1或method1 + method2),这是好吗?或者有更好的主意?

回答

0

如果您倾向于让您的私有方法抛出类似于公共方法无法捕获的异常,那么它们必须抛出自定义异常,而不是通用的\Exception(这实际上是一种很好的做法)。那么在你的测试中,你可以期望抛出自定义异常。

然后总的来说,我认为构造函数本身在设计方面更好一些,以检查args的存在,并在构造时抛出公共方法总是被调用,或者公共方法进行这些检查。它会限制投掷的次数。

PHPUnit的作者对测试私有方法的想法 - https://sebastian-bergmann.de/archives/881-Testing-Your-Privates.html

+0

当然,我做了一个自定义异常,并抛出那么任何机型没有找到。 我只是混淆了一个方法依赖于多方法/类来获得结果,通过模拟模拟是一个好方法或更好的主意? – Lex