我为我的控制器编写了单元测试。我的班级是
class ApiControllerTest extends TestCase
它包含像这样的测试方法
public function testAgeDistribution()
{
$response = $this->action(...,
['datasetName'=>'AgeDistribution',
'min_longitude'=>-80.60, 'max_longitude'=>-78.60,
'min_latitude'=>43.20, 'max_latitude'=>44,
'zoom'=>12
]);
$this->assertResponseOk();
$json = json_decode($response->content());
$this->checkMainThings($json, 'AgeDistribution', 'Population', 7, 100, 7);
}
所有方法都相似,但参数和检查不同。
在处理函数的开头我有一行
$start_memory = memory_get_usage();
我看到(在调试器中)每个新测试都有越来越多的内存使用。
换句话说,测试之间不会释放内存。
如何释放PHP中的内存或我在测试方法中可能出现的错误?
答案 0 :(得分:2)
PHPUnit不会自行清理。一种选择是扩展TestCase并释放tearDown
:
abstract class TestCase extends Illuminate\Foundation\Testing\TestCase
{
public function tearDown()
{
parent::tearDown();
$refl = new ReflectionObject($this);
foreach ($refl->getProperties() as $prop) {
if (!$prop->isStatic() && 0 !== strpos($prop->getDeclaringClass()->getName(), 'PHPUnit_')) {
$prop->setAccessible(true);
$prop->setValue($this, null);
}
}
}
}