Why dont use the AbstractQuery for mocking purposes then? Works fine. Am Montag, 8. Juli 2013 16:57:15 UTC+2 schrieb Phil Bennett: > > @Marco It's a simplistic expectation and return testing layer, I don't > need a mock of a specific query, I just need an instance of the query > object to be returned by another object, no interaction with it whatsoever > so anything else would be overkill. > > On 8 Jul 2013, at 15:50, Marco Pivetta <[email protected] <javascript:>> > wrote: > > @Phil as said, mocking queries does not really make sense, as queries are > the equivalent of `eval`-ed code, just with a different engine. > > > If you want to keep doctrine out of the way, you should instead insulate > code containing DQL into custom repository (and interfaces for them) and > then mock at that level. Testing the repository logic most probably > requires you to work with data fixtures > > Marco Pivetta > > http://twitter.com/Ocramius > > http://ocramius.github.com/ > > > On 8 July 2013 16:17, Phil Bennett <[email protected] <javascript:>> > wrote: > >> I just want to mock everything away and properly unit test the models >> without touching Doctrine directly so the interface would do that job. >> >> On 8 Jul 2013, at 15:14, Marco Pivetta <[email protected] <javascript:>> >> wrote: >> >> There is no real way to mock a query object like that to be honest. The >> only thing you *could* do is checking the generated SQL, but a query is >> just code evaluated by an SQL backend (in my opinion. >> >> I think the idea of mocking a query is per-se wrong. >> >> >> >> Marco Pivetta >> >> http://twitter.com/Ocramius >> >> http://ocramius.github.com/ >> >> >> On 8 February 2011 16:49, Alex Burdenko <[email protected] >> <javascript:>> wrote: >> >>> Hello all. I have some very specific problems with mocking while unit >>> testing using the Doctrine 2 Query class. My thought was to use >>> PHPUnit to Mock the Query.execute() method that is used throughout my >>> code. I've successfully replaced the EntityManager, EntityRepository, >>> and QueryBuilder classes with mock objects in the Zend_Registry (oh >>> yeah, I'm using this with the Zend Framework). But, the Query class is >>> marked final and is therefore unmockable. PHPUnit throws the following >>> >>> PHPUnit_Framework_Exception: Class "Doctrine\ORM\Query" is declared >>> "final" and cannot be mocked. >>> >>> The Query class mock is also missing from GitHub (https://github.com/ >>> doctrine/doctrine2/tree/master/tests/Doctrine/Tests/ORM >>> <https://github.com/doctrine/doctrine2/tree/master/tests/Doctrine/Tests/ORM>) >>> >>> so I don't >>> know if this was attempted by the core Doctrine team. I see no way >>> around this other than removing the final keyword from the Query class >>> but I find modifying the core library unappealing. Here's an example >>> of the code I'm trying to mock. >>> >>> $queryBuilder >>> ->select('a') >>> ->from('Model', 'm'); >>> >>> >>> $query = $queryBuilder->getQuery(); >>> $results = $query->execute(); >>> >>> >>> The last line is the problem. Is there a clean way to mock this? What >>> are the alternatives? Thanks in advance for your help. >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "doctrine-user" group. >>> To post to this group, send email to [email protected] >>> <javascript:>. >>> To unsubscribe from this group, send email to >>> [email protected] <javascript:>. >>> For more options, visit this group at >>> http://groups.google.com/group/doctrine-user?hl=en. >>> >>> >> >> -- >> You received this message because you are subscribed to a topic in the >> Google Groups "doctrine-user" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/doctrine-user/S7s6UvKz4bY/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> [email protected] <javascript:>. >> >> To post to this group, send email to [email protected] >> <javascript:>. >> Visit this group at http://groups.google.com/group/doctrine-user. >> For more options, visit https://groups.google.com/groups/opt_out. >> >> >> >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "doctrine-user" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> To post to this group, send email to [email protected] >> <javascript:>. >> Visit this group at http://groups.google.com/group/doctrine-user. >> For more options, visit https://groups.google.com/groups/opt_out. >> >> >> > > > -- > You received this message because you are subscribed to a topic in the > Google Groups "doctrine-user" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/doctrine-user/S7s6UvKz4bY/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected] <javascript:>. > To post to this group, send email to [email protected] > <javascript:>. > Visit this group at http://groups.google.com/group/doctrine-user. > For more options, visit https://groups.google.com/groups/opt_out. > > > > >
-- You received this message because you are subscribed to the Google Groups "doctrine-user" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/doctrine-user. For more options, visit https://groups.google.com/d/optout.
