2015-05-25 18 views
5

mogę zaktualizować Jasmine 1,3 do 2,0 tak I dodaje niestandardowe matcher aby sprawdzić css jest present.Below jest kod do sprawdzenia dopasowywaniaJasmine 2 niestandardowy układ dopasowujący do hasClass w Protactor

hasClass = function(actual,expected){ 
    return actual.getAttribute('class').then(function (classes) { 
      return classes.split(' ').indexOf(expected) !== -1; 
     }); 
} 

Ale kiedy uaktualnić jaśmin 2 obietnica następnie rzuca błąd przez protactor gdyż oczekiwać powrotu, ale poniżej jest proces asynchroniczny

hasClass = function(){ 
    return compare: function(actual,expected){ 
     return actual.getAttribute('class').then(function (classes) { 
       return {pass: classes.split(' ').indexOf(expected) !== -1}; 
      }); 
    } 
} 

jak mogę przetestować klasa jest obecny w elemencie nie chcę używać jaśmin-jquery ??

+0

prostu zastanawiam się dlaczego trzeba hasClass? Używałem też jakiś czas temu, ale potem zdałem sobie sprawę, że celem testów Kątomierza E2E jest testowanie funkcjonalności, a nie implementacja wewnętrzna. Tak więc np. Div może nadal mieć tę klasę, ale nie działa poprawnie, a następnie nie ma potrzeby sprawdzania, czy ma klasę, czy nie. –

+0

@IgorShubovych to zależy powiedzmy, że klikniesz coś i chcesz pokazać inny div, a następnie jak to przetestować aur powiedz, że ten sam div ma kolor powodzenia i kolor porażki, to jak testujesz w innym scenariuszu – Arpit

+0

expect (field.getCssValue ('border- color ')). toBe (' rgb (242, 88, 5) '); –

Odpowiedz

6

Należy być obietnicą, nie rozwiązaną w jednym. Staraj się umieścić to w swoim beforeEach:

this.addMatchers({ 
    hasClass: function() { 
     return { 
      compare: function(actual, expected) { 
       return { 
        pass: actual.getAttribute('class').then(function(classes) { 
         return classes.split(' ').indexOf(expected) !== -1; 
        }) 
       }; 
      } 
     }; 
    } 
}); 
+0

Przeszukałem kod Jasmine 2 i nie widzę, gdzie zajmuje się Obietnicami. Zamiast tego wydaje się, że bada on ogólną prawdziwość "przekazu" (a obiekt Obietnicy zawsze będzie wydawał się prawdziwy, bez względu na to, jak faktycznie to rozwiązuje/zawodzi). Jesteś pewien, że działa to zgodnie z oczekiwaniami, a nie zawsze pojawia się, aby przejść? – Brian

+0

Kątomierz zastępuje Jasmine, aby ten działał. Kod, którego szukasz, znajduje się w [jasminewd] (https://github.com/angular/jasminewd/tree/jasminewd2) –