php - symfony3中的功能测试,提交表单后访问容器

标签 php symfony testing phpunit

我正在为我的 Symfony3 应用程序编写功能测试。我有一个看起来像这样的测试:

public function testList()
{
    $client = static::createClient();
    $client->getCookieJar()->set($this->cookie);

    $this->sender->method('isSuccessfull')->will($this->returnValue(true));

    $container = $client->getContainer();
    $container->set('app.service1', $this->object1);
    $container->set('app.service2', $this->object2);

    $crawler = $client->request('GET', '/list/1');
    $form = $crawler->selectButton('Save')->form();
    $client->submit($form);

}

在提交表单之前一切都很好。提交表单时内核丢失设置的容器服务。提交表单后如何将这些服务也放入容器中?也许还有其他选择可以解决我的问题?

最佳答案

如果您检查 source code for Symfony\Component\HttpKernel\Client::doRequest() class您可以看到它终止了内核,然后内核稍后再次启动,这就是您丢失所有手动创建的服务的原因。

我想您有一个正在测试的应用程序,因此您可以将服务添加到它的 services.yml。另一种方法是使用您自己的方法扩展 Client 类并覆盖 getContainer() 方法以始终添加这些额外的服务(然后您必须更新 的服务定义code>test.client 在编译过程中与您的自定义类)。

关于php - symfony3中的功能测试,提交表单后访问容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40404674/

相关文章:

angular - 如何在 Angular 中测试来自 RXJS 的 map 和水龙头管道

c++ - 在 C++ 中设置模拟接口(interface)

testing - UI5 - OPA5 测试 - 模拟 "right click"或 "long press"或 "context menu"

php - PHP问题:mysqli_error()恰好需要1个参数,给定0

php - 从数据库中回显一组特定的行

php - 使用 PHP 从 MySQL 日期时间转换为另一种格式

php - Symfony2 自定义存储库不工作

url - Symfony2 Twig url() https

php - symfony2 中的自定义存储库类

php - 在PHP中创建一个依赖于交易表的html表