2016-07-05 29 views
5

Jasmine website'da, xdescribe numaralı süitleri veya xit numaralı münferit özellikleri devre dışı bırakabileceğimizi görüyorum. Sadece bir beklenti (xexpect gibi) devre dışı bırakmanın bir yolu var mı?xdescribe veya xit gibi Jasmine beklentilerini devre dışı bırakma?

Bunu sormamın sebebi, İletici ile e2e testleri yazdığımdan ve sürekli entegrasyonumuzda (eğer varsa) veritabanına erişemediğimizden dolayı, yerel olarak gerçek Örneğin, veritabanına erişim ile son testleri.

Bir yapılandırmaya veya ortam değişkenine bağlı olarak bireysel beklentileri isteğe bağlı olarak işaretlemek istiyorum. Bir kez bir geçiş yapmak güzel olurdu ve beklediğimizde bir sınama oluşturuyoruz, bu da yalnızca sınamaları yerel olarak çalıştırıyorsak (veritabanına erişimle) başarısız oluyor.

dbit('creates new user', function() {}); 

var mı expect ile aynı yapmak için bir yol: Aşağıdaki gibi veritabanı bağlantısı bağlıdır gözlük

if (process.env.DB_AVAILABLE) { 
    dbit = it; 
} else { 
    dbit = xit; 
} 

ve yazma:

Yani, örneğin yeni bir Spec ailesini oluşturabilir (ör. dbexpect)?

Yaklaşımımla ilgili temel bir yanlışlık varsa, geri sarmayın ve bana bildirin.

+0

emin değil - ancak 'browser.getProcessedConfig() 'işlevini kullanabilir ve' seleniumAddress' seçeneğini işaretleyebilir ve koşullu 'bekletme'yi yapabilirsiniz (2 yapılandırmanız varsa, biri yerel ve CI sunucusu için bir tane varsayarak). 'if (local) {else (true) .toBe (true)} else {else (false) .toBe (false)}' ... ama bir çok yerde yapıyorsanız bu pahalıya mal olabilir. – Gunderson

+0

Ayrıca çevreye dayalı bir değişkeni değiştirmeyi bile düşünmemiştim ... bunun için teşekkürler :) – Gunderson

+0

Teşekkür ederim. Evet, bunu düşündüm ama temiz bir çözüm arıyordum –

cevap

1

Sen uygulayarak kendi xexpect yaratabilecek tüm yöntemler/boş fonksiyonu ile özellikleri:

var xexpect = function() { 
    return xexpect; 
}; 

Object.getOwnPropertyNames(jasmine.Expectation.prototype).forEach(function(name){ 
    xexpect[name] = xexpect; 
}); 

Object.defineProperty(xexpect, 'not', {get: xexpect}); 

Kullanımı: `expect` açıklamaya bunu prepending hakkında

xexpect(1).toBeGreaterThan(2); 

xexpect(true).not.toEqual(true);