Yesterday I was trying to test that the ServiceManager was correctly creating an instance of a class which took a Zend\Http\Request object as a parameter to the constructor. The problem I ran into was that since the Zend MVC Application had been initialised from PHPUnit, it decided it was running in a console context and was using a Zend\Console\Request instead.
After a little bit of hunting around I came up with the following simple solution:
Just a quick little tip – Since ZF 2.2 we now have the FormElementManager service available which make is nice as easy to register new custom form elements and fieldsets in your ZF2 application (see Creating Custom Elements). However I quickly discovered that it wasn’t possible to use custom elements easily in my forms if the form was created using the annotation builder. Continue reading
Recently I started playing with Zend Framework 2 Form Annotations which certainly makes building forms much simpler (if you have not heard about this yet see Matthew Weier O’Phinney’s post and the ZF2 Documentation). After getting it up and running I found out about about the @ComposedObject annotation which seemed very useful, however it took a bit of fiddling to get it up and running, here’s how I did it. Continue reading
So far I’ve got the basic idea of how to test a ZF2 Controller with PHPUnit. However I had problems testing all my actions that used the AlbumTable class to load data from the database because I had no access to the ServiceManager which is used to provide AlbumTable to the controller. Obviously solving this was my next step…