【发布时间】:2021-06-20 23:52:49
【问题描述】:
我使用 entityManager 获取我的存储库,但如果我尝试以任何方式访问它,似乎测试会开始无限循环,然后自行终止。如果我尝试在其中找到一个元素,或者只是打印整个变量测试就死了,这都没有关系。
public function testStuff()
{
$moduleRepository = $this->entityManager->getRepository(Module::class);
fwrite(STDERR, print_r("asd", TRUE));
//$result = $moduleRepository->find(1);
fwrite(STDERR, print_r($moduleRepository, TRUE));
}
输出:
PHPUnit 9.5.5 by Sebastian Bergmann and contributors.
Testing
asdKilled
不访问变量:
public function testStuff()
{
$moduleRepository = $this->entityManager->getRepository(Module::class);
fwrite(STDERR, print_r("asd", TRUE));
//$result = $moduleRepository->find(1);
//fwrite(STDERR, print_r($moduleRepository, TRUE));
}
输出:
PHPUnit 9.5.5 by Sebastian Bergmann and contributors.
Testing
asdmodule (App\Tests\module)
☢ Stuff
Time: 00:00.266, Memory: 22.00 MB
OK, but incomplete, skipped, or risky tests!
Tests: 1, Assertions: 0, Risky: 1.
我知道通过不调用变量 getRepository 甚至都没有启动,但是从第一次测试中您可以看到该方法没有任何错误完成,只有当您尝试访问它时才会出现问题。
【问题讨论】:
-
什么是 $moduleRepository?如果你只是 var_dump() 那你会得到什么?
-
它是一个数据库存储库,您不能在测试中使用 var_dump 输出
-
print_r()可能有点古怪。尝试使用var_dump(),或者如果您需要更多花哨的东西,请使用VarDumper with its phpunit integration。 -
@dbrumann 问题不在于打印出来,我无法对那个变量做任何事情,只要我以任何方式使用它,它就会终止我的测试。
-
这很奇怪。您是编写自己的存储库还是使用 Doctrine 的默认存储库?您能否显示存储库的代码(仅具有构造函数的类结构)以及`bin/console debug:container ModuleRepository 的输出)?你是在代码中还是在测试中遇到了同样的问题?