<?php
use PHPUnit\Framework\TestCase;
class ExactlyTest extends TestCase
{
public function testCounterCall() : void
{
$counter = $this->getMockBuilder(Counter::CLASS)
->enableProxyingToOriginalMethods()
->getMock();
$counter->expects($this->exactly(3))
->method('increment');
$this->assertEquals(1, $counter->increment());
$this->assertEquals(2, $counter->increment());
$this->assertEquals(3, $counter->increment());
// a 4th call of increment() is not allowed by this test
$this->assertEquals(4, $counter->increment());
}
}
class Counter
{
private $count = 0;
public function increment()
{
return ++$this->count;
}
}