اجازه ندهید کد آزمایش به تولید بپردازد
tl ؛ dr: از اضافه کردن خودداری کنید استحکام یا پرچم های مشابه
مشکلات
راه حل ها
- IFS رفتار را حذف کنید
- از تزریق وابستگی استفاده کنید
- مدل خدمات خارجی (آنها را مسخره نکنید)
- تنظیمات جداگانه
- منطق تست را جدا کنید
- مرزهای رفتار تمیز را حفظ کنید
refactorings ⚙
متن
وقتی پرچم هایی مانند اضافه می کنید استحکام، شما کد آزمایش و تولید را مخلوط می کنید.
این مسیرهای پنهان را ایجاد می کند که فقط در تست ها فعال هستند.
همچنین ، شما کد تولید واقعی را پوشش نمی دهید.
شما در معرض خطر رفتار آزمایش حمل و نقل به تولید ، منجر به اشکالات و رفتار غیرقابل پیش بینی می شوید.
کد نمونه
اشتباه
struct PaymentService {
is_testing: bool,
}
impl PaymentService {
fn process_payment(&self, amount: f64) {
if self.is_testing {
println!("Testing mode: Skipping real payment");
return;
}
println!("Processing payment of ${}", amount);
}
}
درست
trait PaymentProcessor {
fn process(&self, amount: f64);
}
struct RealPaymentProcessor;
impl PaymentProcessor for RealPaymentProcessor {
fn process(&self, amount: f64) {
println!("Processing payment of ${}", amount);
}
}
struct TestingPaymentProcessor;
impl PaymentProcessor for TestingPaymentProcessor {
// Notice this is not a mock
fn...