Symfony 3模拟服务功能测试phpunit和liip

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Symfony 3模拟服务功能测试phpunit和liip相关的知识,希望对你有一定的参考价值。

我使用Symfony 3.4。我有功能测试,从LiipFunctionalTestBundleTestWebTestCase延伸,在某些功能我想模拟一些服务,我创建mockobject服务,但在行动中我仍然有原始服务,如何模拟服务

在我的功能

        $mock = $this->getMockBuilder(AdditionalFunction::class)
        ->disableOriginalConstructor()->getMock();

    $this->getContainer()->set('app.additional_function', $mock);


    $this->getClient()->request(
        Request::METHOD_GET,
        $uri
    );

在我的行动$uri

public function sendAction(OutboundInvoice $outboundInvoice)
{
    $test = $this->get('app.additional_function');

在变量$test我有原始类‌AppBundleHelperAdditionalFunction

如何模拟服务?

答案

您可以按照https://github.com/liip/LiipFunctionalTestBundle/issues/107#issuecomment-358267059的建议执行以下操作

$mock = $this->createMockInAnyWayYouWant();
static::$kernel->getContainer()->set('id_service', $mock);

以上是关于Symfony 3模拟服务功能测试phpunit和liip的主要内容,如果未能解决你的问题,请参考以下文章

Symfony PHPUnit 测试不验证用户

Symfony/PhpUnit - 如何测试服务中是不是抛出异常

以编程方式对用户进行身份验证以进行 PhpUnit 功能测试 - 不受 Doctrine 管理 - Symfony 4.3

运行 PHPUnit 测试时,容器参数在 Symfony 5 服务中不可用/注入

Symfony 2 + Doctrine 2 + PHPUnit 3.5:闭包异常的序列化

用 phpunit 模拟 symfony 安全,返回空值而不是布尔值(不使用预言)