Avatar ·

كيف تتحقق من أن الطريقة لم يتم استدعاؤها باستخدام Mockito؟

مرحبًا! أكتب اختبارات وحدة لتطبيق Java باستخدام JUnit وMockito. لدي خدمة لا ينبغي لها، في ظل ظروف معينة، استدعاء طريقة من كائن تابع. على سبيل المثال، إذا لم يكن المستخدم مصرحًا له، فلا ينبغي استدعاء طريقة sendEmail(). كيف يمكنني التحقق من ذلك في الاختبار؟

إليك مثال مبسط لشفرة البرنامج:

public class NotificationService {
    private EmailService emailService;

    public NotificationService(EmailService emailService) {
        this.emailService = emailService;
    }

    public void processUser(User user) {
        if (user.isActive()) {
            emailService.sendEmail(user.getEmail(), "Welcome!");
        }
    }
}

لقد كتبت اختبارًا للحالة التي يكون فيها المستخدم نشطًا — حيث أتحقق من استدعاء sendEmail() باستخدام verify(emailService).sendEmail(...). ولكن كيف أكتب اختبارًا للحالة التي يكون فيها المستخدم غير نشط (على سبيل المثال، user.isActive() ترجع false) للتأكد من أن sendEmail() لم يتم استدعاؤها؟