Lesson 9 - Unit Tests of Commercial Applications I
In the previous lesson, Fake, Codeception Stub and AspectMock, we finished mocking in PHPUnit, in
Codeception, and AspectMock. In order to make the best possible preparation for
practice, in the following two lessons, we're going to see interesting
situations and approaches in unit tests that I chose from real-world commercial
applications, especially from extensive tests of the ICT.social internal system.
You're going to understand how to test more difficult scenarios, learn how to
mock native PHP functions, mock the superglobal $_GET
,
$_POST
, and $_FILES
arrays, test random data
generators, compare images with tolerance, and other interesting testing
techniques.
Date and time mocking
Let's consider a class that allows us to register cron tasks (scheduled tasks). In web applications, it's often necessary to perform different actions at time intervals. Perhaps the easiest example is sending newsletter emails, which should be sent in multiple batches, for example, only a few hundred emails per hour, otherwise your server will be considered as spam by e-mail providers. Other similar actions include various event reminders, posting to social networks, synchronizing currency rates, processing logs, and so on.
Once you have dozens of crons set up in your app, it's very difficult to
maintain them through the server administration. That's why we created a
TaskRunner
class, bound to a single cron event, that is executed
every 5 minutes. TaskRunner
then triggers other events as they are
registered in it.
But how to test the class when it's internally using the native PHP
time()
function? To avoid having to wait for an hour in the test
for example, we'll create our own
...End of the preview...
Continue further
You've come here and that's great! We believe that the first lessons showed you something new and useful
Do you want to continue the course? Go to the premium section.
Buy this course
Before buying this article, you have to buy the previous one
This article is licensed: Premium III, by buying this article, you agree with the terms of use.
- Unlimited and permanent access to individual lessons.
- High quality IT knowledge.
- Skills to help you get your dream and well-paid job.
Article description
Requested article covers this content:
In this tutorial, we'll test the date and time in PHP using PHPUnit to simulate its changes and test how libraries response to them.
You gain credits by supporting our network. This is done by sending a helpful amount of money to support the site, or by creating content for the network.