gpt4 book ai didi

symfony 2.1 phpunit Swift_Message 类未找到

转载 作者:行者123 更新时间:2023-12-02 07:26:45 25 4
gpt4 key购买 nike

我有 symfony 和 phpunit 的问题。我们的员工规模越来越大。因此我们决定激活 phpunit 的进程隔离,因为服务器无法再承受大量的测试(RAM 不足)。从那时起,所有发送邮件的测试都不再起作用。有人可以帮助我们吗?如果 processIsolation="false",下面的测试工作得很好,但如果 processIsolation="true",则失败

版本:

  • symfony 2.1.8-dev

  • phpunit 3.7.9

错误消息

项目\AppBundle\测试\MailTest::testSendMailPHPUnit_Framework_Exception:PHP fatal error :在/var/www/project/src/Project/AppBundle/Tests/MailTest.php 中找不到类“Swift_Message”

测试

public function testSendMail()
{
$client = static::createClient();

$message = \Swift_Message::newInstance();
$message->setFrom('example@example.com')
->setTo('example@example.com')
->setSubject('Subject')
->setBody('Hello World')
->setContentType('text/html');

$client->getContainer()->get('mailer')->send($message);
$this->assertTrue(true);
}

phpunit.xml

<phpunit
backupGlobals="false"
backupStaticAttributes="false"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
bootstrap="./autoload.php"
processIsolation="true"
stopOnFailure="false"
syntaxCheck="false" >

<testsuites>
<testsuite name="Project Test Suite">
<directory>../src/Project/AppBundle/Tests/MailTest.php</directory>
</testsuite>
</testsuites>
</phpunit>

最佳答案

这个错误是因为Switfmailer定义了一个常量引起的安装自动加载器后 SWIFT_REQUIRED_LOADED 。这自动加载器检查此常量,如果已定义,则拒绝安装自动加载器。在进程隔离中,PHPUnit 确保所有定义的常量都会在生成的进程中重新定义运行测试。不幸的是,这意味着 SWIFT_REQUIRED_LOADED在测试过程中定义,因此自动加载器不会加载(请参阅swiftmailer 源目录中的“swift_required.php”)。注意如果您关闭通过注释包含测试的全局状态测试仍然无法工作,因为引导文件被传递给通过 __PHPUNIT_BOOTSTRAP 全局变量测试过程(参见PHPUnit 目录中的 TestCaseMethod.tpl)。如果没有全局变量,这个全局在测试过程中是未定义的,引导文件是不包括破坏测试。

我发现唯一有效的解决方法是替换该行$constants = PHPUnit_Util_GlobalState::getConstantsAsString();$constants = '';在 PHPUnit 源代码分发中的 TestCase.php 的 run 方法中。如果你的代码依赖于测试用例运行之前定义的全局常量这个修复显然对你不起作用(类常量是 不同的故事);除非所述常量将在中安全地重新定义运行测试用例的过程。

关于symfony 2.1 phpunit Swift_Message 类未找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16079085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com