我刚开始使用PHP并且正在为一些遗留代码编写一些测试。我这里有一个有特点的课。如何测试该类在函数中使用特征方法的方法?
trait Cooltrait
{
public function extractMethod($z){
return $z[0];
}
}
class Awesome
{
using Cooltrait
public function handlesomething($x, $y){
$var1 = $this->extractMethod($x)
if(!is_null($var1)){
return true;
}
return false;
}
}
我需要测试$ var1在类中是否为null,但我正在使用此特征的方法。有没有人遇到如何在类中最好地模拟/存根特性来测试 Awesome 类中的 hadlesomething 函数? (编辑澄清问题)。
答案 0 :(得分:0)
如果您正在测试Awesome
,您可以假设特征在运行时是其中的一部分。如果您想单独测试Cooltrait
,可以使用getMockForTrait
。
在这种情况下; “我需要测试$ var1是否为null”,它是前者 - 假设在测试时已经应用了特征。
注意:语法为use
,而不是using
。
public function testVarIsNull()
{
$awesome = new Awesome;
$result = $awesome->handlesomething(array(null), 'not relevant in your example');
$this->assertFalse($result);
$result = $awesome->handlesomething(array('valid'), 'not relevant in your example');
$this->assertTrue($result);
}
由于extractMethod
是公开的,您也可以单独测试该方法:
public function testExtractMethodShouldReturnFirstArrayEntry()
{
$awesome = new Awesome;
$this->assertSame('foo', $awesome->extractMethod(array('foo')));
}
...或使用getMockForTrait
:
public function testExtractMethodShouldReturnFirstArrayEntry()
{
$cooltrait = $this->getMockForTrait('Cooltrait');
$this->assertSame('foo', $cooltrait->extractMethod(array('foo')));
}