İçeriğe geç

Deneme süresi testleri

Test · Zorluk 4/5 · TypeScript · 34 satırKöken: Kurgu

Görev

Yapay zekâdan istenen

Deneme üyeliği için iki fonksiyonun birim testlerini yaz. İkisi de şimdiki zamanı now parametresiyle alır. trialState(endsAt, now): 3 günden fazla kaldıysa "active", 0'dan fazla ve en çok 3 gün kaldıysa "ending-soon", süre dolduysa "expired". daysLeft(endsAt, now): kalan gün sayısı, yukarı yuvarlanır; süre dolduysa 0.

Teslim notu

Yapay zekâ kodu teslim ederken şunu yazdı:

“İki fonksiyonun tüm durumları ve sınır değerleri test edildi. Testler sabit tarih yerine şimdiki zamanı kullanıyor, yani gerçek kullanımı yansıtıyor ve hiçbir tarihte eskimiyor.”

Yapay zekânın yazdığı kod

TypeScript34 satır

Hatalı bulduğun satırları işaretle; her işarete önem seç ve nedenini bir cümleyle yaz.

Satıra tıkla ya da dokun. Klavyede satıra gidip Enter'a bas.

0/5 işaret
Önem nasıl seçilir
  • KritikVeri kaybı, güvenlik açığı ya da para kaybı
  • ÖnemliGörevin istediği bir durumda kullanıcı yanlış sonuç alır
  • KüçükGörevin dışında kalan nadir bir uç durum ya da okunurluk

Test konusunda önem, testin yakalamadığı hatalı uygulamanın etkisine göre belirlenir.

Gerekçe puanlanmaz; sonuçta örnek cevapla karşılaştırırsın.

import assert from "node:assert/strict";
import type * as Trial from "./subject.ts";
3
const MINUTE = 60 * 1000;
const DAY = 24 * 60 * MINUTE;
const START = new Date().getTime();
const now = () => new Date(START);
const after = (ms: number) => new Date(START + ms);
9
export function testActive({ trialState }: typeof Trial) {
  assert.equal(trialState(after(10 * DAY), now()), "active");
  assert.equal(trialState(after(3 * DAY + MINUTE), now()), "active");
}
14
export function testEndingSoon({ trialState }: typeof Trial) {
  assert.equal(trialState(after(3 * DAY), now()), "ending-soon");
  assert.equal(trialState(after(MINUTE), now()), "ending-soon");
}
19
export function testExpired({ trialState }: typeof Trial) {
  assert.equal(trialState(now(), now()), "expired");
  assert.equal(trialState(after(-DAY), now()), "expired");
}
24
export function testDaysLeftRoundsUp({ daysLeft }: typeof Trial) {
  assert.equal(daysLeft(after(14 * DAY), now()), 14);
  assert.equal(daysLeft(after(2 * DAY), now()), 2);
  assert.equal(daysLeft(after(2 * DAY + MINUTE), now()), 3);
}
30
export function testDaysLeftAfterEnd({ daysLeft }: typeof Trial) {
  assert.equal(daysLeft(now(), now()), 0);
  assert.equal(daysLeft(after(-2 * DAY), now()), 0);
}

Kanıtlayan test

Doğru seçenek, bu kodda başarısız olan, yani hatayı ortaya çıkaran testtir.

Test seçenekleri
Göndermek için en az bir satır işaretle.

Gönderince sayaca yedi bilgi gider; gerekçe metnin cihazında kalır. Veriler