كيفية كتابة اختبار وحدة في Rust يتحقق من حدوث panic؟
مرحباً بالجميع! لقد بدأت للتو في تعلم Rust وأحاول إتقان كتابة الاختبارات. لدي دالة يجب أن تسبب panic! في ظروف معينة. على سبيل المثال، كتبت دالة قسمة بسيطة تسبب panic عند القسمة على صفر:
```rust
fn divide(a: i32, b: i32) -> i32 {
if b == 0 {
panic!("division by zero");
}
a / b
}
```
الآن أريد كتابة اختبار وحدة يتحقق من أن استدعاء `divide(10, 0)` يسبب panic بالفعل. لكنني لا أفهم كيفية القيام بذلك بشكل صحيح. إذا كتبت ببساطة:
```rust
#[test]
fn test_divide_by_zero() {
divide(10, 0);
}
```
فإن الاختبار سيفشل مع خطأ، وسيظهر cargo test FAILED. هذا ليس ما أحتاجه — أريد أن يعتبر الاختبار ناجحاً إذا حدث panic، وفاشلاً إذا لم يحدث panic.
سمعت أن هناك سمة `#[should_panic]` في Rust، لكنني لست متأكداً من كيفية استخدامها. كما أنني مهتم: هل يمكن التحقق ليس فقط من حدوث panic، بل أيضاً من رسالتها؟