未找到symfony 2.1 phpunit Swift_消息类
我和symfony和phpunit有问题。我们的项目越来越大。因此,我们决定为phpunit激活进程隔离,因为服务器无法再经受大量的测试(RAM不足)。从那时起,所有发送邮件的测试都不再工作了。有人能帮我们吗?如果processIsolation=“false”,下面的测试工作得非常好,但是如果processIsolation=“true”,则测试失败 版本:未找到symfony 2.1 phpunit Swift_消息类,symfony,phpunit,swiftmailer,classnotfound,Symfony,Phpunit,Swiftmailer,Classnotfound,我和symfony和phpunit有问题。我们的项目越来越大。因此,我们决定为phpunit激活进程隔离,因为服务器无法再经受大量的测试(RAM不足)。从那时起,所有发送邮件的测试都不再工作了。有人能帮我们吗?如果processIsolation=“false”,下面的测试工作得非常好,但是如果processIsolation=“true”,则测试失败 版本: symfony 2.1.8-dev phpunit 3.7.9 错误消息 Project\AppBundle\Tests\MailT
- symfony 2.1.8-dev
- phpunit 3.7.9
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>
../src/Project/AppBundle/Tests/MailTest.php
如果您首先实例化$message,然后调用static::createClient,它会工作吗?此错误是因为SwitMail定义了一个常量而导致的
SWIFT安装自动加载器后需要加载。这个
autoloader检查此常量,如果已定义,则拒绝
安装自动加载器。在流程隔离中,PHPUnit确保
所有定义的常量都在生成的进程中重新定义
运行测试。不幸的是,这意味着SWIFT\u需要加载
是在测试过程中定义的,因此自动加载器不会加载(请参阅
swiftmailer源目录中的“swift_required.php”)。注意
如果禁用“通过注释包含测试的全局状态”
测试仍然无法工作,因为引导文件已传递给
通过u_PHPUNIT_引导全局变量的测试过程(请参阅
PHPUnit目录中的TestCaseMethod.tpl)。如果没有环球,
该全局变量在测试过程中未定义,引导文件为
不包括破坏测试
我发现唯一可行的办法就是更换线路
$constants=PHPUnit_Util_GlobalState::getConstantSassString()代码>
具有
$constants=''代码>
在PHPUnit源代码发行版的TestCase.php的run方法中。如果你的代码
依赖于在运行测试用例之前定义的全局常量
此修复显然不适用于您(类常量是
不同的故事);除非所述常数将在
运行测试用例的过程。这是由与swiftmailer自动加载器相关的问题引起的
我遇到了同样的问题,并在swiftmailer的分叉存储库中修复了它
您可以在此处找到修复程序的PR:
如果您不希望等待合并,您可以通过将其添加到您的composer.json
来使用my repository
"require": {
"swiftmailer/swiftmailer": "dev-master as 5.0.x-dev"
},
"repositories": [
{
"type": "vcs",
"url": "https://github.com/NickStemerdink/swiftmailer.git"
}
]
更新:同时PR已经合并,因此您可以只更新到最新的swiftmailer版本。如何运行测试?确保使用“-c”选项告诉phpunit phpunit.xml配置文件的位置。因此,如果它在“app”目录中,它应该是这样的:“phpunit-c app src/Project/AppBundle/Tests/MailTest.php”是的,这正是我让我们运行它的命令。但仍然不起作用。请使用bootstrap=“bootstrap.php.cache”尝试更改:bootstrap=“./autoload.php”