-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathAbstractClassTest.php
More file actions
62 lines (50 loc) · 1.41 KB
/
Copy pathAbstractClassTest.php
File metadata and controls
62 lines (50 loc) · 1.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php declare(strict_types=1);
namespace App\Tests\Unit\Util\Example;
use App\Tests\Shared\Unit\TestCase;
use App\Util\Example\AbstractClass;
class AbstractClassTest extends TestCase
{
/**
* @see https://phpunit.readthedocs.io/en/8.4/test-doubles.html#mocking-traits-and-abstract-classes
*/
public function testConcreteMethodWithMockForAbstractClassMethod()
{
// Arrange
$stub = $this->getMockForAbstractClass(AbstractClass::class);
$stub
->expects($this->once())
->method('abstractMethod')
->willReturn('foo');
// Act
$result = $stub->concreteMethod();
// Assert
$this->assertSame('foo', $result);
}
/**
* @see https://mnapoli.fr/anonymous-classes-in-tests/
*/
public function testConcreteMethodWithAnonymousClass()
{
// Arrange
$class = new class() extends AbstractClass
{
protected function abstractMethod(): string
{
return 'foo';
}
};
// Act
$result = $class->concreteMethod();
// Assert
$this->assertSame('foo', $result);
}
public function testConcreteMethodWithDummyClass()
{
// Arrange
$dummy = new Dummy();
// Act
$result = $dummy->concreteMethod();
// Assert
$this->assertSame('foo', $result);
}
}