На днях я наткнулся на следующий код в проекте:
class Users { public function __construct(PDO $pdo) { $this->pdo = $pdo; } public function getAllUsers() { $stmt = $this->pdo->prepare('SELECT * FROM users'); return $stmt->fetchAll(); } }
И был вот такой тест для проверки этого кода:
class UserTest extends TestCase { public function testGetAllUsers() { $pdo = m::mock(PDO::class); $stmt = m::mock(PDOStatement::class); $pdo->shouldReceive(‘prepare’)->andReturn($stmt); $pdoStmt->shouldReceive(‘fetchAll’)->andReturn($userArray); $users = new Users($pdo); $result = $users->getAllUsers(); $this->assertEquals($userArray, $users); } }
Обратите внимание, что я опустил остальную часть класса User, а также массив пользователей, который возвращается в тесте.
Этот тест на самом деле даёт нам 100%-ое покрытие кода в методе getAllUsers()
. Но, к сожалению, для любой практической цели, этот тест полностью бесполезен.
from Php Profi New Posts http://ift.tt/2mVIwY1
via IFTTT