2013-08-15 26 views
15

NodeJS ile mocha test framework'ü kullanmaya başladım. Başarı iddiaları iyi çalışıyor, ancak onaylama başarısız olursa, test zaman aşımlarım. Denemek için denemeliyim. Model kimliği daha sonra 1 değilse örneğin (zaman uyumsuz kodu) İşteMocha, zaman aşımına neden olan onaylamadı

it('should create new user', function(done){ 
    userService.create(user).then(function(model){ 
     expect(model.id).to.be(1); //created user ID 
     done(); 
    }, done) 
    }); 

için deney timesout yerine raporlama iddiasını başarısız oldu. Eminim yanlış bir şey yapıyorum. Yardımınıza minnettar olurum. Teşekkürler!

+0

Geçerli uygulamanın nasıl olduğu anlaşılıyor. https://github.com/visionmedia/mocha/pull/278 – SamSerious

cevap

17

, bu söz tarafından yakalanan bir hatayı beklemektedir. Yapılan çağrıların yakalanması durumu bunu düzeltir.

it('should create new user', function(done) { 
    userService.create(user).then(function(model) { 
     expect(model.id).to.be(1); //created user ID 
     done(); 
    }).catch(function(e) { 
     done(e); 
    }) 
}); 
+0

Eğer mocha 1.18 veya daha iyisi kullanıyorsanız, danvk'in cevabı daha iyi. Bu cevabı kendim görmeyi neredeyse özledim, bu yüzden burada görünürlük için yorum yapıyorum. – Retsam

0

done'a asla benzemiyor. then'un yanı sıra, arızayı gidermek için bir else'a da ihtiyacınız olabilir.

18

Shawn'ın yanıtı çalışır, ancak daha basit bir yolu vardır. Eğer testi Promise dönerseniz

, Mocha sizin için her şeyi idare edecek:

it('should create new user', function() { 
    return userService.create(user).then(function(model){ 
    expect(model.id).to.be(1); //created user ID 
    }); 
}); 

No done geri arama ihtiyacı!

+0

Promise desteği [eklenmiştir] (https://github.com/mochajs/mocha/blob/master/HISTORY.md#1180--2014-03-13) Mocha 1.18'de, yani bu soru sorulduktan sonra. – danvk

+0

Harika! Shawn cevap olarak kabul edeceğim danvk işaret etti :) – SamSerious

+0

Teşekkürler. Bu en iyi çözümdür. –

İlgili konular