Unit-тесты - тестируют отдельный класс/метод в изоляции (зависимости замокированы). Быстрые, детерминированные.
Интеграционные - тестируют взаимодействие нескольких компонентов (БД, API, файлы). Медленнее, но проверяют реальную работу.
// Unit test
public function testCalculateDiscount(): void {
$calc = new DiscountCalculator();
$this->assertEquals(10.0, $calc->calculate(100.0, 10));
}
// Integration test
public function testCreateOrder(): void {
$order = $this->orderService->create($this->user, $this->items);
$this->assertDatabaseHas('orders', ['user_id' => $this->user->id]);
}Пирамида тестирования: много unit, меньше integration, мало E2E.