"Spec Way" implementation requires switching form "$this->tester" notation to using "I" operator implemented by static class so that spec syntax will be similar to:
I::describe('income tax calculations');
I::expect('for income less that 50 000 calculator use 10% tax rule', function () use ($service) {
I::lookAt('first level income tax')
->seeNumber($service->calculateTax())
->isNotEmpty()
->isEqualTo(self::EXPECTED_TAX_FOR_FIRST_LEVEL_TAX_RULE);
});
I::expect('for income between 50 000 and 100 000 calculator use 12% tax rule', function () use ($service) {
I::lookAt('second level income tax')
->seeNumber($service->calculateTax())
->isNotEmpty()
->isEqualTo(self::EXPECTED_TAX_FOR_SECOND_LEVEL_TAX_RULE);
});
I::expect('for income more than 100 000 calculator use 20% tax rule', function () use ($service) {
I::lookAt('second level income tax')
->seeNumber($service->calculateTax())
->isNotEmpty()
->isEqualTo(self::EXPECTED_TAX_FOR_THIRD_LEVEL_TAX_RULE);
});
"Spec Way" implementation requires switching form "$this->tester" notation to using "I" operator implemented by static class so that spec syntax will be similar to: