【问题标题】:How to unit test a method has multi inner call protected/private method by phpunit?如何通过phpunit对一个方法进行单元测试,该方法具有多个内部调用保护/私有方法?
【发布时间】:2016-11-24 14:14:44
【问题描述】:

我是单元测试的新手。 我的测试环境是 Laravel 上的 PHPUnit。

我想知道如何通过 PHPUnit 对一个方法进行单元测试,该方法具有多调用保护/私有方法?

那些受保护/私有方法不仅返回预期值,而且在失败时抛出异常。

example.phpExampleTest.php

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

【问题讨论】:

    标签: php unit-testing laravel mocking phpunit


    【解决方案1】:

    如果您一心想让私有方法抛出公共方法无法捕获的异常,那么它们必须抛出自定义异常,而不是泛型 \Exception(这实际上是一个好习惯)。因此,在您的测试中,您可以期望抛出自定义异常。

    然后一般来说,我认为构造函数本身检查 args 的存在并在构造时抛出(如果总是会调用公共方法,或者让公共方法进行这些检查)会更好。它会限制四处投掷的次数。

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

    【讨论】:

    • 当然我做了一个自定义异常,然后抛出任何未找到的模型。我只是对依赖于多方法/类来获得结果的方法感到困惑,逐个模拟是一种好方法还是更好的主意?
    猜你喜欢
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 2022-08-05
    • 2020-08-24
    • 2023-03-14
    • 1970-01-01
    相关资源
    最近更新 更多