【问题标题】:how to unit testing function that doesn't return value in phpunit?如何对phpunit中不返回值的函数进行单元测试?
【发布时间】:2011-04-18 23:27:28
【问题描述】:

所以这是我要测试的课程。具体来说,我只是选择我想要测试的功能之一。而 var 是从 classB 执行某些函数返回的值 bar 是来自 classC 的实例,然后执行一些传递一些变量的函数。对于大多数提示/示例,要测试的函数是返回一个值。所以我的问题是,如何测试这个特定功能是否有效?

谢谢。

class mA extends A {
    ...
    function doSomething($foo) {
        $var = doStuffFromClassB("hallo");
        $bar = ClassC::instance();
        $bar->doStuffFromClassC($var, $foo, "world");
    }
}

【问题讨论】:

    标签: unit-testing phpunit


    【解决方案1】:

    如果它被称为doSomething,并且它没有通过返回值来表明它的作用,那么您可以使用mock objects 来跟踪与其他对象的交互。

    请参阅 PhpUnit 的 documentation on mock objects。我想在这种情况下,您想验证 doStuffFromClassC 方法是否与来自 doStuffFromClassB 的 var 相关。

    【讨论】:

    • 感谢 4 的建议。但我有以下问题要问:[1] 为了测试这些方法(doStuffFromClassB 和 C),我应该在一个测试中编写它还是为每个 doStuffFromClass* 编写单独的测试? [2] 还是只需要从 B 类和 C 类的 TestCase 中测试这些方法,而不是在 mA 类中测试 void 函数?
    • 对于单元测试,您希望将您正在测试的类与其他类的所有实现隔离开来。如果 mA 的代码只是调用 B 和 C 上的方法,那么验证一下。 B 和 C 可以单独进行单元测试。
    猜你喜欢
    • 2020-09-28
    • 1970-01-01
    • 2014-10-02
    • 2021-12-16
    • 2013-04-03
    • 1970-01-01
    • 2022-01-25
    • 2021-08-23
    • 1970-01-01
    相关资源
    最近更新 更多