before()
önce bir kez çalıştırılan tüm bir de testlerde describe
after()
bir kez çalıştırıldıktan sonra tüm bir de testlerden describe
beforeEach()
önce çalıştırılan her bir test describe
afterEach()
sonrasında çalıştırılan her a'da testidescribe
Hangisini kullanmak istediğiniz gerçek testinize bağlıdır.
Şimdi, uzun açıklama için. Bunun mocha -R min
üzerine koşarsanız:
describe("top", function () {
before(function () {
console.log("top before");
});
after(function () {
console.log("top after");
});
beforeEach(function () {
console.log("top beforeEach");
});
afterEach(function () {
console.log("top afterEach");
});
it("test1", function () {
console.log("top test1");
});
describe("sublevel", function() {
before(function () {
console.log("sublevel before");
});
after(function () {
console.log("sublevel after");
});
beforeEach(function () {
console.log("sublevel beforeEach");
});
afterEach(function () {
console.log("sublevel afterEach");
});
it("test1", function () {
console.log("sublevel test1");
});
it("test2", function () {
console.log("sublevel test2");
});
});
it("test2", function () {
console.log("top test2");
});
});
Şöyle bir şey göreceksiniz (Alakalı olmayan çıktıyı atladım):
top before
top beforeEach
top test1
top afterEach
top beforeEach
top test2
top afterEach
sublevel before
top beforeEach
sublevel beforeEach
sublevel test1
sublevel afterEach
top afterEach
top beforeEach
sublevel beforeEach
sublevel test2
sublevel afterEach
top afterEach
sublevel after
top after
Önce ve tonlarca de testlerin her birinden sonra yürütür neyi bakarsak şaşırtıcı olabilir şey olduğunu hembeforeEach
üst düzeyde ve Sublevel de geri aramaları denir. İçin aynı şey afterEach
.
Bazılarında sekansı tarafından sürpriz edilir sublevel before
, top beforeEach
, sublevel beforeEach
. : Onlar bir dış kapsamındaki tüm kancalar onlar diziyi bekliyoruz, böylece bir iç kapsamındaki tüm kanca önce yürütmek gerektiğini düşünüyorum top beforeEach
, sublevel before
, sublevel beforeEach
. Bununla birlikte, Mocha'nın kancaları yürütme sırası tamamen anlamlıdır: bir before
kanca, bir grup test için aşamayı belirlerken, beforeEach
her bir test için bir test vardır. Mocha bir test yürütür, tüm before
ve beforeEach
set edilmiş kancalar describe
bunu ihtiva ettiği ve her ataları describe
deneyi için de geçerlidir. Mocha, her before
kancayı en dıştaki kapsamdan en içteki kancaya ve en dış kapsamdan en içteki tüm beforeEach
kancaları yürütecektir . ancak, before
geçerli tüm kancalar herhangi bir beforeEach
kancadan önce yürütülür . Bu, yukarıdaki sırayı açıklar: bir kanca olduğu için daha sublevel before
önce yürütülür. Ve ile ve aynı mantık geçerlidir fakat sırası tersine: Bütün uygulamak kancalar herhangi önce yürütülür kanca.top beforeEach
before
after
afterEach
afterEach
after
Ayrıca, Mocha'nın it
aramalarımı describe
en üst seviyedeki aramaya göre nasıl sipariş ettiğimi umursamadığını da unutmayın describe
. Bu çalıştırır top test1
, top test2
ve ardından tonlarca testleri, ben verdi emir olmasına rağmen top test1
, daha sonra daha sonra alt düzey testleri ve top test2
.
Ne arasından kullanmak istediğiniz before
, beforeEach
vb gerçekten testlerin özelliklerine bağlıdır. Eğer kurulum için sahte bir nesne veya veri yapısını ihtiyaç ve bu nesne veya yapı varsa olabilir tek tüm testler tarafından yeniden describe
kullanabileceğiniz before
kurmak ve after
onu yıkmaya. Yapı üzerinde salt okunur testler yapıyorsanız durum bu olabilir. Tüm testleriniz sadece okursa, tekrar tekrar oluşturmanıza gerek yoktur. Her test yapıyı değiştirdiği için her test yapının yeni bir kopyasına describe
ihtiyaç duyuyorsa, her test için yapıyı yeniden oluşturmak için kullanmalısınız ve sonrabeforeEach
afterEach
Temiz bir şekilde yırtmanız gerekiyorsa. Bunu yapmak, test izolasyonu sağlar: her test bilinen bir durumdan başlar ve başarılı olması için önceki bir testin varlığına veya yokluğuna bağlı değildir.