2013-11-27 9 views
7

mocha javascript sınama çerçevesini kullanarak, yalnızca önceden tanımlanan sınama geçtikten sonra birkaç sınamanın (tüm asenkronize) çalışabilmesini istiyorum.Yalnızca bir zaman uyumsuz sınaması geçtikten sonra mocha sınamasını nasıl çalıştırırım?

Bu testleri birbirinin içine yerleştirmek zorunda kalmak istemiyorum. Testlerinizi ancak o zaman uyumsuz da testleri çalıştırabilirsiniz ama diğer testler tutmak olmamalıdır iş mantığının küçük bir parça test uygun şekilde ayarlandığında, eğer

describe("BBController", function() { 
    it("should save", function(done) {}); 
    it("should delete", function(done) {}); 
}) 

cevap

-4

. Yine

describe("BBController", function() { 
    it("should save", function(done) { 
     // handle logic 
     // handle assertion or other test 
     done(); //let mocha know test is complete - results are added to test list 
    }); 
    it("should delete", function(done) { 
     // handle logic 
     // handle assertion or other test 
     done(); //let mocha know test is complete - results are added to test list 
    }); 
}); 

, hiçbir test bu sorunu varsa o zaman impove yollarını bakmak gerekir, geçmek çalıştırmak için başka bir test için beklemek zorunda olmalıdır: tamamlamak için bir test almanın yolu aşağıdaki yapmaktır Bağımlılık enjeksiyonunuz veya testlerinizi daha önce bir yöntemle hazırlayın

+1

Sadece testlerin sorduğum şekilde yapılandırılmaması gerektiğini söylüyorsunuz, ki bu soruya cevap vermiyor. Ayrıca, kodunuz sadece istediğim gibi herhangi bir bağımlılık ayarıyla ilgili olmayan() yapılır. Gerçekten söylemek istediğin şeyin, mocha'nın bu bağımlılığı desteklemediğini varsayıyorum. –

+0

Soruyu hiçbir şekilde cevaplamıyor ... Tim dediği gibi. Bitti bu soruyla alakalı değil. – mbochynski

+0

cevabı, testlerin doğru şekilde kurulmadığını, herhangi bir testin geçerli olmaya devam eden diğer testlere bağlı olmadığını belirtir. Herhangi bir testin çalıştırılması için bir testin önceki bir blokta çalıştırılması gerekir, çünkü test bağımlılıklarınızın test edilememesi için testlerinizin rastgele bir şekilde çalıştırılması iyi bir uygulamadır. – kkemple

2

--bail seçeneğini kullanın. En az mocha 0.14.0 kullandığınızdan emin olun. (Ben başarılı olmadan eski sürümleri ile denedim.)

İlk olarak, mocha için yalnızca bir önceki bittikten sonra bir sınama çalıştırmak için yapmanız gereken bir şey yok. Mocha bu şekilde varsayılan olarak çalışır. test.js bu kaydetme:

describe("test", function() { 
    this.timeout(5 * 1000); // Tests time out in 5 seconds. 

    it("first", function (done) { 
     console.log("first: do nothing"); 
     done(); 
    }); 

    it("second", function (done) { 
     console.log("second is executing"); 
     // This test will take 2.5 seconds. 
     setTimeout(function() { 
      done(); 
     }, 2.5 * 1000); 
    }); 

    it("third", function (done) { 
     console.log("third is executing"); 
     // This test will time out. 
    }); 

    it("fourth", function (done) { 
     console.log("fourth: do nothing"); 
     done(); 
    }); 
}); 

Sonra bunu yürütün: Birinci ve ikinci testler bittiğinde

  1. : Sen gelene kadar dördüncü bir test başlangıç ​​görmez

    mocha -R spec test.js 
    

    .

  2. Üçüncü sınama zaman aşımına uğradı.

Şimdi, bunu çalıştırın:

mocha -R spec --bail test.js 

Mocha en kısa sürede testi 3 başarısız olarak duracaktır.

İlgili konular