Mocking the Entity Manager

You're a lousy Entity Manager and you're doing a bad job. You're a very naughty Entity Manager.

No, not that kind of Mocking. I know, I know, such wit.

Ok, fun time over, back to business.

In this video we're going to be looking at how we can create a Mock of our Entity Manager, allowing us to effectively fake our requests to, and responses from our Database.

Why might we want to do this? The biggest reason is speed. Without having to talk to our database - a slow process, in computer time frames - we will have faster tests. Faster tests mean we are more likely to regularly run our test suite, and after all, if we aren't running our test suite regularly, why are we investing time in creating and maintaining it?

The code used in the example for this video is a hybrid of the example from the How to Test Code that Interacts with the Database cookbook article on

The first time you create some PHP Unit tests (whether in Codeception, PHPUnit itself, or otherwise) that have mocks that return mocks that return yet more mocks can be quite confusing. It's even more confusing when someone new to the project, or more specifically, new to PHP Unit testing in general has to look at and understand that mock structure before they can benefit from what the test is telling them.

Personally, I find having someone walk through an example, maybe explaining it slightly differently to the written documentation, and going over it step by step is incredibly helpful.

Hopefully you do to.

Code For This Course

Get the code for this course.

Code For This Video

Get the code for this video.


# Title Duration
1 Installing Codeception in Your Symfony 2 Project 04:20
2 Bootstrapping Codeception 02:09
3 Codeception's Folder Structure 06:43
4 Generating Tests 06:28
5 How to Run Codeception Tests 02:44
6 Our First Acceptance Test 08:00
7 An Alternative Perspective on Acceptance Testing 04:33
8 Acceptance Testing Symfony Forms 08:22
9 Acceptance Testing and Javascript (Part 1 of 2) 07:31
10 Acceptance Testing and Javascript (Part 2 of 2) 08:06
11 An Introduction to Unit Testing in Codeception 04:24
12 Unit Testing a Symfony Service 11:59
13 Integration with Symfony 2 06:27
14 Databases and Unit Tests 14:21
15 Real World Unit Testing - Database Clean Up Issues 06:15
16 Fast PHP Unit Testing with SQLite Database 10:19
17 Mocking the Entity Manager 20:22
18 Codeception Selenium Setup 06:08
19 How to Setup XDebug with PHPStorm 07:36
20 Step Objects and Page Objects 09:35
21 Fizz Buzz Kata 24:43
22 Code Coverage Reports 10:30
23 Running Acceptance Tests Faster With Phantom JS 01:30
24 Mobile Browser Tests 01:18