Uyumluluk: Pactmark 0.2.x. @pactmark/testing bir geliştirme bağımlılığıdır ve asla üretim dışa aktarımının parçası değildir.

Test paketinin verdikleri

FakeClock

Deterministik zaman; böylece son kullanma ve zaman aşımı testleri kararsız olmaz.

SequenceIdGenerator

Öngörülebilir kimlikler; böylece snapshot’lar kararlı olur.

FakeModelDriver

Senaryolanmış turlar — araç çağrıları, finaller, hatalar — sağlayıcı anahtarı olmadan.

FakeTool / FakeToolExecutor

Nasıl çağrıldığını — çağrılmadığını da — kaydeden araçlar.

CrashInjector

crashAtEveryBoundary, çökme güvenliğini bir umut değil sayılabilir bir matris hâline getirir.

ScenarioBuilder

Deterministik bir senaryoyu bir kez kurup paketler arasında yeniden kullanın.

Depo sözleşme paketleri

Aynı sözleşme testlerini bellek ve Postgres uygulamalarına karşı çalıştırın.

Sözleşme fixture'ları

Adaptör testleri için kararlı iş emirleri, olaylar, artifact’lar ve korumalı değerler.

Kapsam listesi

Yeşil bir mutlu-yol testi size çok az şey söyler. Önemli olan senaryolar şunlardır:
Koşu tamamlanır, artifact beklenen özette vardır, gereken doğrulayıcılar geçmiştir ve kanıt kaydı doğrulamadan geçer.
Şemasını geçemeyen dış girdi KAF_SCHEMA_INVALID üretir ve hiçbir model çağrısı yapılmaz.
Reddedilmiş bir risk sınıfı ve eksik bir grant geri çevirir — ve araç yürütücüsü sıfır çağrı kaydeder.
Aynı komut tekrarlandığında aynı semantik sonuç döner. Tek kullanımlık bir kanıt iki kez harcanamaz.
Koşu ortasında iptal, aracın AbortSignal’ına ulaşır ve koşu takılmak yerine cancelled durumuna gelir.
Turlar, araç çağrıları ve aktif yürütme milisaniyeleri her biri kendi sınırında koşuyu sonlandırır.
Aynı koşuda yarışan iki komut: biri kazanır, diğeri iç içe geçmek yerine çakışır.
Kirasını kaybeden bir worker commit edemez. Bir log satırına değil fencing token’a bakarak doğrulayın.
Her sınırda bir çökme enjekte edin ve koşunun devam ettirilebilir olduğunu ve hiçbir etkinin tekrarlanmadığını doğrulayın.
Belirsiz bir sonuç park eder. Hata fırlatılmadığını değil, dış hedefin bir kez çağrıldığını doğrulayın.
Bir araç şemasını sürümünü değiştirmeden değiştirin; koşunun devam etmek yerine askıya alındığını doğrulayın.
Her depolama metodunu başka bir tenant’ın yetkisiyle deneyin. Reddi ve bilgi vermemeyi doğrulayın.

Hataları değil etkileri doğrulayın

Bu sayfadaki en değerli alışkanlık budur:
Sıfır-gönderim sayacı bir güvenlik doğrulamasıdır. Fırlatılan bir hata ise bir belirtidir.

Çökme matrisleri

İki süreçli onaylanmış-etki kanıtları, belirsiz-etki tasarımı için üretebileceğiniz en güçlü kanıttır. Ayrıca kendi araç uygulamalarınızda gerçek bir hata bulma olasılığı en yüksek testlerdir.

Çalışma alanını değil yayımlanan baytları test edin

Yalnızca workspace bağlantıları paket meta verisini, dışa aktarımları, tip beyanlarını veya başlatıcı deneyimini kanıtlayamaz. Bağımsız fixture’larda paketlenmiş tarball’ları tüketin:
Bu koşum, tüm adayları paketler, bağımlılık sırasına göre geçici bir loopback registry’ye yayımlar, başlatıcıyı çalıştırır ve global npm yapılandırmasını değiştirmeden bırakır.
Depo tam olarak bu nedenle bağımsız NodeNext, Bundler, Yarn, Bun ve loopback-registry fixture’ları çalıştırır. “Monorepo’da çalışıyor” ile “kurulduğunda çalışıyor” farklı iddialardır.

Paketleri çalıştırma

Örnekler

Her örnek burada anlatılan senaryo testleriyle gelir.

Tehdit modeli

Her yüksek ve kritik satır, onu destekleyen çalıştırılabilir kanıtı adlandırır.