describe ve it Blokları
Bir test paketini yapılandırın.
describe ve it Blokları, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Lua Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Lua Academy kursu toplamda 4 dersten oluşur.
Bir Belirtimin Yapısı
busted testleri iki temel işlevle düzenler: describe ve it. Bir describe bloğu ilişkili testleri gruplar; her it bloğu ise tek bir test durumudur.
Bu yapı, davranış odaklı geliştirmeden gelir ve düz İngilizce gibi okunur.
describe("Stack", function()
it("starts empty", function()
assert.are.equal(0, Stack.new():size())
end)
end)Tanımlama Bloğu
describe bir ad dizesi ve bir işlev alır. Ad, test edilen birimi veya özelliği, örneğin bir modülü ya da sınıfı, tanımlamalıdır.
İşlevin içindeki her şey o gruba aittir. Sonuçları düzenlemek için ad test çıktısında görünür.
describe("calculator", function()
-- tests live here
end)it Bloğu
Her it bloğu belirli bir davranışı açıklar. Dize, describe ile başlatılan cümleyi tamamlamalıdır.
Birlikte okunduğunda, "hesap makinesi" ile "iki sayıyı toplar" açık bir amaç belirtimi oluşturur.
describe("calculator", function()
it("adds two numbers", function()
assert.are.equal(5, calc.add(2, 3))
end)
end)describe Bloklarını İç İçe Yerleştirme
Bağlamı ifade etmek için describe bloklarını iç içe yerleştirebilirsiniz. İçteki bir blok, belirli bir yöntemi veya özel bir koşulu açıklayabilir.
İç içe yerleştirme, ilişkili durumları bir arada tutar ve okunabilir, girintili bir çıktı üretir.
describe("List", function()
describe("push", function()
it("adds an item", function()
assert.are.equal(1, list:push("a"):size())
end)
end)
end)before_each Kurulumu
before_each, kendi bloğundaki her it bloğundan önce bir işlev çalıştırır. Testlerin durumu paylaşmaması için yeni test verileri oluşturmak üzere kullanın.
Bu, her testi yalıtılmış tutar. Bir testteki değişiklik sonraki teste sızamaz.
describe("Stack", function()
local s
before_each(function()
s = Stack.new()
end)
it("pushes", function()
s:push(1)
assert.are.equal(1, s:size())
end)
end)after_each Temizlemesi
after_each, her testten sonra çalışır. Geçici dosyalar, open bağlantılar veya genel durum gibi kaynakları temizlemek için kullanın.
Kurulum ile temizlemeyi eşleştirmek, testler arasında ortamın sıfırlanmasını sağlar.
after_each(function()
os.remove("temp.db")
end)Kurulum ve Temizleme
busted ayrıca, test başına değil, describe bloğu başına bir kez çalışan setup ve teardown işlevlerini de sunar.
Test başına kurulum yapmak israfa yol açacaksa, paylaşılan bir bağlantıyı açmak gibi maliyetli tek seferlik işler için bunları kullanın.
describe("db", function()
setup(function()
db = connect()
end)
teardown(function()
db:close()
end)
end)Bekleyen Testler
Bazen henüz yazmadığınız bir testi not etmek istersiniz. Bir açıklamayla pending çağırın veya işlev içermeyen bir it bloğu yazın.
busted bunları başarılı ya da başarısız olarak değil, beklemede olarak bildirir ve tamamlamanız gerektiğini hatırlatır.
it("handles unicode", function()
pending("not implemented yet")
end)Odaklanma ve Dışlama
Hata ayıklarken testlerin bir alt kümesine odaklanabilirsiniz. Komut satırında --tags ile etiketlemek veya busted yardımcılarını kullanmak yalnızca önemli olanları çalıştırmanıza olanak tanır.
Bu, tek bir sorunlu alan üzerinde yineleme yaparken tüm paketi çalıştırmanızı önler.
-- run only tests tagged 'fast'
-- busted --tags=fastAdlandırma Kuralları
İyi adlar başarısızlıkları kendi kendini açıklayacak hâle getirir. Tanımlama bölümünü konuyla, it bölümünü ise davranışı açıklayan bir fiille başlatın.
"çalışır" veya "test1" gibi belirsiz adlardan kaçının. Başarısız bir test, üzerinde işlem yapabileceğiniz bir hata raporu gibi okunmalıdır.
describe("parser", function()
it("rejects malformed input", function()
assert.has_error(function() parser.parse("{") end)
end)
end)Hepsini Bir Araya Getirme
Eksiksiz bir belirtim, describe gruplarını, before_each kurulumunu ve odaklanmış test durumlarını birleştirir. Bu iskelet tek bir testten yüzlerce teste kadar ölçeklenebilir.
En anlaşılır çıktı için blokları küçük tutun ve her testi tek bir davranışa odaklayın.
describe("Account", function()
local acc
before_each(function() acc = Account.new(100) end)
it("withdraws funds", function()
acc:withdraw(40)
assert.are.equal(60, acc.balance)
end)
end)Hızlı Kontrol
busted blok yapışını ne kadar anladığınızı test edin.
Özet
describe ilişkili testleri gruplar, it ise belirtim gibi okunan tek bir durum tanımlar. Bağlamı ifade etmek için describe bloklarını iç içe yerleştirin.
Test başına yalıtım için before_each ve after_each, blok başına bir kez yapılan işler içinse setup ve teardown kullanın. Tamamlanmamış işleri pending ile işaretleyin.
Sıkça Sorulan Sorular
“describe ve it Blokları” dersi ücretsiz mi?
Evet — “describe ve it Blokları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Lua Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Lua Academy kursu toplamda 4 dersten oluşur.
“describe ve it Blokları” dersinde ne öğreneceğim?
Bir test paketini yapılandırın. Lua Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Lua Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Lua Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“describe ve it Blokları” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Lua Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Lua Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Neden Test Yapılır
- describe ve it Blokları
- Doğrulamalar
- Sahte Nesneler ve Casuslar