2016-07-05 43 views
5

Na Jasmine website widzę, że możemy wyłączyć pakiety przez xdescribe lub indywidualne specyfikacje przez xit. Czy istnieje sposób wyłączenia tylko oczekiwania (np. xexpect)?Wyłącz oczekiwanie Jasmine, jak xdescribe lub xit?

Powodem, dla którego o to pytam, jest to, że piszę testy e2e z Kątnikiem iw naszej ciągłej integracji nie mamy jeszcze (jeśli w ogóle) dostępu do bazy danych, chociaż lokalnie możemy uruchomić naprawdę testy końcowe z dostępem do bazy danych, na przykład.

Chciałbym zaznaczyć indywidualne oczekiwania jako opcjonalne, w zależności od konfiguracji lub zmiennej środowiskowej. Byłoby miło zrobić przełącznik raz, a następnie utworzyć wrapper w oczekiwaniu, który kończy się niepowodzeniem, jeśli przeprowadzamy testy lokalnie (z dostępem do bazy danych).

Tak na przykład można utworzyć nową niespełniającego Rodzina:

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

i pisać specyfikacje, które zależą od połączenia z bazą danych w następujący sposób:

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

Czy istnieje sposób, aby zrobić to samo z expect (np. dbexpect)?

Jeśli jest coś fundamentalnie nie tak z moim podejściem, nie zatrzymuj go i daj mi znać.

+0

Nie wiesz o poprzedzenie go do 'expect' rachunku - ale możesz ewentualnie użyć 'browser.getProcessedConfig()' i sprawdzić 'seleniumAddress' i zrobić warunkowe' oczekiwać' (zakładając, że masz 2 konfiguracje, jedną dla lokalnego i jedną dla serwera CI). 'if (local) {expect (true) .toBe (true)} else {spodziewać (false) .toBe (false)}' ... ale może to być kosztowne, jeśli robisz to w wielu miejscach. – Gunderson

+0

Również nigdy nie myślałem o zmianie 'to' na zmienną opartą na środowisku ... dzięki za to :) – Gunderson

+0

Dziękuję. Tak, myślałem o tym, ale szukałem czystego rozwiązania –

Odpowiedz

1

Można by stworzyć swój własny xexpect wdrażając wszystkie metody/właściwości z pustym funkcji:

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

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

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

Zastosowanie:

xexpect(1).toBeGreaterThan(2); 

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