2015-09-21 5 views
1

Я использую webdriverJS и Jasmine для выполнения сквозного тестирования веб-страницы. Я хотел бы проверить, имеет ли элемент class при определенных обстоятельствах, но я хотел бы сделать это, используя методы от purejasmine.Проверьте, имеет ли элемент класс только с тестовой средой Jasmine

Это часть кода, где находится проблема:

describe('Header bar', function() { 
    it('should show/hide elements accoding to the window position', function() { 
     this.driver.executeScript('scroll(0, 1000)'); 
     var elemSearch = this.driver.findElements(webdriver.By.id('animatedElement, animatedElement2, animatedElement3')); 
     expect(elemSearch).toContain('appear-2'); 
    }); 
}) 

Знаете ли вы, если есть способ решить эту проблему, или пару примеров, которые я мог смотреть, без использования расширения, такие как jasmine-jquery?

Заранее благодарим за ваши ответы!

+1

я прямо сказал в мой вопрос, что я не хочу использовать 'жасмин-jquery' или другие третьи стороны ... –

+2

уверен, Я явно прочитал это, и мой комментарий все еще действителен. – alecxe

+0

Извините, мой плохой. Я должен был указать, что я не хочу использовать что-либо внешнее. Наверное, это невозможно сделать, не так ли? –

ответ

2

Если вы не хотите иметь jasmine-jquery или другие сторонние пакеты, вносящие индивидуальные жасминовые сокеты в качестве зависимости, вы всегда можете извлечь toHaveClass() matcher implementation и use it. Обратите внимание, что наличие вашей логики утверждения, инкапсулированной внутри пользовательских совпадений, помогает следовать за DRY principle и сделать ваши тесты более чистыми.

FYI, вот toHaveClass реализация сейчас мы используем:

beforeEach(function() { 
    jasmine.addMatchers({ 
     toHaveClass: function() { 
      return { 
       compare: function(actual, expected) { 
        return { 
         pass: actual.getAttribute("class").then(function(classes) { 
          return classes.split(" ").indexOf(expected) !== -1; 
         }) 
        }; 
       } 
      }; 
     }, 
    }); 
}); 
+0

Эй, парень! На самом деле у меня все еще есть вопрос по этой проблеме: метод, который я использовал, не работает должным образом, а версия, с которой вы меня связали, использует 'jquery'. Есть ли способ закодировать пользовательский матчи в чистом синтаксисе 'javascript',' jasmine'? –

+0

@ d_z90 хорошо, имеет смысл. Я добавил совпадение, которое мы сейчас используем. Надеюсь, это поможет. – alecxe

+0

Это тот же самый код, который я использовал, и он выглядит правильно, но у меня есть две проблемы: независимо от имени класса, он проходит тест. Вместо этого, если я использую '.not.toHaveClass', он сработает. Я опубликовал [вопрос] http://stackoverflow.com/questions/32715770/not-custom-matcher-error-jasmine об этой проблеме, чтобы показать вам, что я имею в виду. –

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