2011-04-18 80 views
3

所以这是我想测试的类。具体而言,我只是选择了一个我想测试的功能。而var是从classB中做一些函数返回的值bar是classC中的实例,然后执行一些传递一些变量的函数。对于大多数提示/示例,要测试的函数返回一个值。所以我的问题是,如何测试这个特定的功能工作?如何在phpunit中不返回值的单元测试函数?

谢谢。

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

回答

6

如果这就是所谓的doSomething,它并不表示它做什么返回一个值,那么你可以使用mock objects跟踪与其他物体的相互作用。

请参阅PhpUnit的documentation on mock objects。我想在这种情况下,你想验证doStuffFromClassC方法与doStuffFromClassB的var有关。

+0

谢谢4的建议。但我有以下问题要问: [1]所以要测试这些方法(doStuffFromClassB&C),我应该在一个测试中写入它还是为每个doStuffFromClass *写入单独的测试? [2]或者我应该只需要测试类B和C的TestCase中的那些方法,而不是测试mA类中的void函数? – 2011-04-21 10:30:35

+1

对于单元测试,您希望将正在测试的类从其他类的所有实现中分离出来。如果mA的代码只是调用B和C上的方法,然后验证。 B和C可以单独进行单元测试。 – 2011-04-21 10:33:33

相关问题