{"id":15014531,"url":"https://github.com/ramunasd/symfony-container-mocks","last_synced_at":"2025-04-12T08:08:55.416Z","repository":{"id":62533174,"uuid":"52395643","full_name":"ramunasd/symfony-container-mocks","owner":"ramunasd","description":"Symfony container for easy service mocking","archived":false,"fork":false,"pushed_at":"2018-07-24T17:34:39.000Z","size":31,"stargazers_count":22,"open_issues_count":1,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-12T08:07:06.800Z","etag":null,"topics":["mock-services","mocking","php","phpunit","symfony","symfony-container","tests"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ramunasd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-02-23T22:17:16.000Z","updated_at":"2024-03-07T21:26:54.000Z","dependencies_parsed_at":"2022-11-02T15:00:52.389Z","dependency_job_id":null,"html_url":"https://github.com/ramunasd/symfony-container-mocks","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ramunasd%2Fsymfony-container-mocks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ramunasd%2Fsymfony-container-mocks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ramunasd%2Fsymfony-container-mocks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ramunasd%2Fsymfony-container-mocks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ramunasd","download_url":"https://codeload.github.com/ramunasd/symfony-container-mocks/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248537136,"owners_count":21120709,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mock-services","mocking","php","phpunit","symfony","symfony-container","tests"],"created_at":"2024-09-24T19:45:44.339Z","updated_at":"2025-04-12T08:08:55.396Z","avatar_url":"https://github.com/ramunasd.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿# Symfony Container Mocks\n\n[![Build Status](https://travis-ci.org/ramunasd/symfony-container-mocks.svg?branch=master)](https://travis-ci.org/ramunasd/symfony-container-mocks)\n[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/ramunasd/symfony-container-mocks/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/ramunasd/symfony-container-mocks/?branch=master)\n[![PHP-Eye](https://php-eye.com/badge/ramunasd/symfony-container-mocks/tested.svg?style=flat)](https://php-eye.com/package/ramunasd/symfony-container-mocks)\n[![Coverage Status](https://coveralls.io/repos/github/ramunasd/symfony-container-mocks/badge.svg?branch=coveralls)](https://coveralls.io/github/ramunasd/symfony-container-mocks?branch=coveralls)\n\n\nThis container enables you to mock services in the Symfony dependency\ninjection container. It is particularly useful in functional tests.\n\n## Features\n\n* Can replace any Symfony service or parameter\n* Automatically detects service class from service definition\n* Can be used with any mocking framework\n* Compatible with Symfony versions 2.7 - 3.4\n* Works on all supported version of PHP\n\n## OTB supported mocking frameworks\n\n * [phpspec/prophecy](https://github.com/phpspec/prophecy)\n\n## Installation\n\nAdd SymfonyContainerMocks using composer:\n\n`composer require \"ramunasd/symfony-container-mocks\"`\n\nor edit your composer.json:\n\n```js\n{\n    \"require\": {\n        \"ramunasd/symfony-container-mocks\": \"*\"\n    }\n}\n```\n\n\nReplace base container class for test environment in `app/AppKernel.php`\n\n```php\n\u003c?php\n\nuse Symfony\\Component\\HttpKernel\\Kernel;\nuse Symfony\\Component\\Config\\Loader\\LoaderInterface;\nuse RDV\\SymfonyContainerMocks\\DependencyInjection\\TestKernelTrait;\n\nclass AppKernel extends Kernel\n{\n    // use special container when env=test\n    use TestKernelTrait;\n    \n    public function registerBundles()\n    {\n        return [\n            // bundles\n        ];\n    }\n    \n    public function registerContainerConfiguration(LoaderInterface $loader)\n    {\n    }\n}\n```\n\nAnd clear application cache.\n\n\n## Examples\n\n### Inject mocked service\n\n```php\n\u003c?php\n\nnamespace Acme\\Bundle\\AcmeBundle\\Tests\\Controller;\n\nuse Symfony\\Bundle\\FrameworkBundle\\Test\\WebTestCase;\nuse Acme\\Bundle\\AcmeBundle\\Service\\Custom;\n\nclass AcmeControllerTest extends WebTestCase\n{\n    /**\n     * @var \\Symfony\\Bundle\\FrameworkBundle\\Client $client\n     */\n    private $client;\n\n    public function setUp()\n    {\n        parent::setUp();\n\n        $this-\u003eclient = static::createClient();\n    }\n\n    public function tearDown()\n    {\n        $this-\u003eclient-\u003egetContainer()-\u003etearDown();\n        $this-\u003eclient = null;\n\n        parent::tearDown();\n    }\n\n    public function testSomethingWithMockedService()\n    {\n        $this-\u003eclient-\u003egetContainer()-\u003eprophesize('acme.service.custom', Custom::class)\n            -\u003esomeMethod([])\n            -\u003ewillReturn(false)\n            -\u003eshouldBeCalledTimes(2);\n\n        // ...\n    }\n}\n```\n\n### Inject automatically mocked service\n\n\u003e feature works only with flag \"debug\" enabled.\n \n```php\n$mock = $this-\u003eclient-\u003egetContainer()-\u003eprophesize('acme.service.custom');\n$mock\n    -\u003emyMethod()\n    -\u003ewillReturn(true);\n```\n\n### Other mocking frameworks\n\n```php\n// create stub\n$mock = $this-\u003egetMock(Custom::class);\n\n// inject service mock\nself::$kernel-\u003egetContainer()-\u003esetMock('acme.service.custom', $mock);\n\n// reset container state\nself::$kernel-\u003egetContainer()-\u003eunMock('acme.service.custom');\n\n```\n\n### Set specific framework parameter\n\n```php\n// set custom value during test\nself::$kernel-\u003egetContainer()-\u003esetMockedParameter('acme.service.parameter1', 'customValue1');\n\n// trigger service, assert results\n\n// reset all parameters to original values\nself::$kernel-\u003egetContainer()-\u003eclearMockedParameters();\n```\n\n\n## Things TO DO\n\n* Symfony 4.x support\n* PSR-11 adoption\n\n\n## Similar/Related projects\n\n* https://github.com/jakzal/phpunit-injector - inject Symfony services into PHPUnit test cases\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Framunasd%2Fsymfony-container-mocks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Framunasd%2Fsymfony-container-mocks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Framunasd%2Fsymfony-container-mocks/lists"}