You can build this project using composer
. You can download composer package manger from: https://getcomposer.org/download/
Project uses phpunit version 9 that requires a PHP 7.3 or PHP 7.4 (https://phpunit.de/getting-started/phpunit-9.html)
For additional code coverage also XDebug needs to be installed (https://xdebug.org/wizard)
For mocking You can use ockery or phpUnit:
Build project
composer install
Run tests
composer tets
Your task is to implement SnowRescueService class - this is your System Under Test. Treat all other classes as dependencies.
-
Send sander if temperature will be below 0 C
-
Send snowplow if snowfall exceed 3 mm
-
If snowplow fails (SnowplowMalfunctioningException) - send another
-
Send two snowplows if snowfall exceed 5 mm
-
If temperature drops below -10 and snowfall exceed 10 mm, send three snowplows, a sander and notify press.
Zaimplementuj klasę SnowRescueService - to jest twój System Under Test. Wszystkie pozostałe klasy potraktuj jako zależności.
-
Wyślij piaskarkę (sander) tylko jeśli temperatura będzie poniżej 0 st C
-
Wyślij pług (snowplow) tylko jeśli opady śniegu przekroczą 3 mm
-
Jeśli pług nawali (SnowplowMalfunctioningException) - wyślij kolejny
-
Wyślij dwa pługi tylko jeśli opady śniegu przekroczą 5 mm
-
Jeśli temperatura będzie poniżej -10 i opady śniegu przekroczą 10 mm, wyślij trzy pługi, piaskarkę i powiadom prasę.
Systemy zewnętrzne:
WeatherForecastService
MunicipalServices
PressService
Do zaimplementowania:
SnowRescueService.checkForecastAndRescue
Handling test doubles in phpunit:
https://phpunit.de/manual/6.5/en/test-doubles.html