@Lukas, yes just for testing, it would be quite confusing otherwise.
@Bulat, it is a good approach also. An other thing you can do with PHPUnit
is:
$mockAuthService = $this->getMock('Application\Service\AuthService');
// configure PHPUnit Mock
$mockAuthService->expect()
// ...
$container->set("auth.service", $mockAuthService);
or directly as you wrote:
$controller->setAuthService($mockAuthService);
By the way, what I meant is that you can just overload your annotation
definition with something like that:
services:
auth.service:
class: Test\*Mock*\Service\*Mock*AuthService
arguments: [...]
Then nothing more to do in your tests: the controller is configured by the
DIC which inject his dependencies. But for tests purpose the implementation
is not the same: the mock service will be injected and the test code does
not have to worry or even know about that. That is the flexibility provided
by DI, from Wikipedia <http://en.wikipedia.org/wiki/Dependency_injection>:
"[DI] is useful in unit testing
<http://en.wikipedia.org/wiki/Unit_testing>because it is easy to
inject a fake
implementation <http://en.wikipedia.org/wiki/Mock_object> of a service into
the object being tested by changing the configuration file."
On Thu, Sep 23, 2010 at 3:56 PM, Lukas Kahwe Smith <[email protected]>wrote:
>
> On 23.09.2010, at 15:52, Loïc Frering wrote:
>
> > By overloading the configuration I just mentioned that it could be
> possible when you want to unit test your controller to inject a mock service
> instead of the real implementation as long as testing with the real
> implementation means already be doing integration tests. This overloading is
> "just" defining a service definition with the same id as another that will
> be loaded when tests are run.
>
> right .. overloading is ok for testing ... but should not be used for
> normal operations.
>
> regards,
> Lukas Kahwe Smith
> [email protected]
>
>
>
> --
> If you want to report a vulnerability issue on symfony, please send it to
> security at symfony-project.com
>
> You received this message because you are subscribed to the Google
> Groups "symfony developers" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]<symfony-devs%[email protected]>
> For more options, visit this group at
> http://groups.google.com/group/symfony-devs?hl=en
>
--
Loïc Frering
[email protected]
--
If you want to report a vulnerability issue on symfony, please send it to
security at symfony-project.com
You received this message because you are subscribed to the Google
Groups "symfony developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/symfony-devs?hl=en