Imagine building an application without having to mess with a Web Browser, a REST client or a MySQL client. What if you could build full-blown functionality with realistic data operations within the comfort of a Unit Test Harness?

What if this meant shipping code earlier and more frequently than you ever have before?

Building upon concepts outlined in this talk:, and leveraging an evolving "Kata" for building a "Ride-Hailing Application", this exercise will walk thru a rapid-development example from a "clean-slate" Symfony3 project, with just enough bootstrapping to enable Test-Driven Development with PHPUnit & Doctrine.

What you'll learn from this tutorial:
* how to test-drive a web service, with PHPUnit and Codeception for acceptance
* which software architecture makes it easier to test-drive applications while building more robust systems


Comments are closed.

Thomas Berends at 16:57 on 7 Jun 2019

At first, this workshop was going way too fast. It was hard to keep up, and when you missed a part, it was not possible to get 'back' to where Chris was. Chris is fast, crazy fast. And unfortunately that caused me to not have small moments to 'take in' what we learned.

However, after the break, Chris had changed. It was a bit slower, and he took moments so people could copy what he had just typed. He also committed the results, which meant an even easier way to keep up. I did however in the break decide however, to not follow along as he typed and just see what he was doing and take it in. He shared a video of the whole talk with us, and I'll certainly use that to continue learn how to do TDD. I'll just have to play it at 50% speed.

Sorry that I have provided the promised feedback quite late, but nonetheless I hope it is useful to you!

The initial pace was quite high, I can imagine that if you are at a novice level it could be highly challenging to follow along.
I thought it was great you provided a screen capture of the whole tutorial so you could take a look at a later stage. Please do this in the future as well! What also helped is that you committed along they way so if you lost track at a certain point, you could resume track very quickly.

I was also stunned at how you were able to incorporate suggestions from the audience in the project! Very well and nicely done :D

One small remark is that the contrast on the projection was quite poor. Along the way the IDE of your participants will start throwing warning because of not yet implemented methods and it's hard to tell if your IDE is doing the same due to the poor contrast of the projection. This was quite confusing to me in the beginning as I wasn't aware your IDE was displaying the same errors as mine. Maybe in the future you should use a solid yellow instead of a darker transparent one as PhpStorm's default. You can set this under Preferences > Editor > Color Scheme > General > Errors and warnings > Warning.
To avoid this confusion in a whole, maybe it's good to mention the absence of the methods as a whole the first time such a situation occurs. Some people - including me - tend to implement empty methods before running tests for the first time which was what led to my confusion in the first place.

To conclude, I can recommend your tutorial to all kinds of audience except the absolute beginner. I think you require a basic knowledge of PHPUnit to get started or you will most likely get completely lost during this tutorial. Other than that, I believe your tutorial caters to every level of audience.
For the novice your tutorial is ideal to get bombarded and enriched with knowledge and new ideas and insights.
For the intermediate this serves as an ideal tutorial to confirm they are on the right track.
For the advanced user there are a lot of subtle tricks which can greatly improve ones workflow. Please continue to subtly mention you always work with tests and code side-by-side and show the shortcuts you use because they can make a great difference to the advanced user.

All in all, I would highly recommend people to attend future editions of your tutorial!