2015-03-26 4 views
2

Мне интересно, существует ли более простой способ проверить, действительно ли поле ввода используется с помощью транспортира. Я написал вспомогательную функцию, которая выглядит следующим образом:проверка транспортира, если элемент действителен

isValid(css:string) { 
    var deferred = protractor.promise.defer(); 

    expect(element(by.css(css)).isPresent()).toBe(true); 

    element(by.css(css)).getAttribute('class').then(function (attributes) { 
     var matches:string[] = attributes.match('ng-invalid'); 

     deferred.fulfill(matches === null || matches.length === 0); 
    }); 

    return deferred.promise; 
} 

Это прекрасно работает, но это, кажется, не так, как вы использовать транспортир. Кажется, что это сложно ...

У любого из вас есть более простой способ? Что-то вроде

expect(element(by.css(css)).isValid()).toBeTruthy 
+0

Что не так с 'expect (hasClass (элемент (by.name ('ваш-элемент')), 'ng-invalid')). ToBe (true);'? Возможно, проверьте и на 'ng-dirty'. –

ответ

3

Если угловой код имеет логику для проверки формы и правильно обновляет ng-valid/ng-invalid, то вы можете просто сделать

expect(hasClass(element(by.name('your-element')), 'ng-invalid')).toBe(true); 
expect(hasClass(element(by.name('your-element')), 'ng-dirty')).toBe(true); 

И если вы хотите передать your-element в качестве параметра.

+0

Ой, подождите ... еще одна вещь ... Я использую TypScript для написания своих тестов, и кажется, что он не знает, где найти hasClass ... Знаете ли вы, из какой библиотеки это было? Это не в Protractor Api doku, ни в одном из Jasmine ... – waXve

+0

@waXve вы можете прочитать о методе hasClass здесь: http://stackoverflow.com/questions/5085567/hasclass-with-javascript-or-site -с-JQuery к JavaScript-трансляции –

Смежные вопросы