كيف تتحقق في PHPUnit من أن الطريقة ألقت استثناءً؟
مرحباً بالجميع! لقد بدأت للتو في تعلم PHPUnit وأكتب اختبارات لمشروعي. لدي طريقة يجب أن ترمي استثناءً في ظروف معينة، مثل `InvalidArgumentException`، إذا تم تمرير وسيطة غير صحيحة.
المشكلة أنني لا أستطيع فهم كيفية كتابة assert بشكل صحيح يتحقق من أنه تم إلقاء الاستثناء. جربت لف استدعاء الطريقة في `try...catch` ثم عمل `$this->assertTrue($caught)`، لكن هذا يبدو قبيحاً ولا يستخدم إمكانيات PHPUnit.
إليك مثال على الكود الخاص بي:
```php
class Calculator {
public function divide($a, $b) {
if ($b == 0) {
throw new \InvalidArgumentException('Division by zero.');
}
return $a / $b;
}
}
```
واختباري الذي يتحقق من الاستثناء بشكل غير جميل:
```php
public function testDivisionByZero() {
$calculator = new Calculator();
$caught = false;
try {
$calculator->divide(10, 0);
} catch (\InvalidArgumentExce