2016-02-27 1 views
0

Я строю интерфейс с использованием Ratpack и конвейера активов и тестирую его с помощью Geb. Мне нужно, чтобы некоторые из страниц были динамическими, а поскольку Knockoutjs, похоже, больше не находится в разработке, я использую VueJS. Моя проблема в том, что, хотя я могу визуально видеть данные из моей модели Vue, мои тесты Geb ломаются, поскольку контент не найден. Я попытался добавить дополнительное время, переключившись на разные браузеры (я в основном использую PhantomJS, но пробовал с Firefox и Chrome), и каждый раз я не могу видеть элементы, когда он работает в этой моде. Я мог смотреть в сторону и продолжать развиваться, но это не кажется правильным, если я не могу хотя бы подтвердить, что контент появляется на странице. Я знаю, что Vue относительно нова, но я предполагаю, что то же самое произойдет, если вы используете что-то, используя ReactJS. Я добавил соответствующие части кода ниже. Каков наилучший способ проверить это?geb-тестирование на ratpack и vuejs

build.gradle

testCompile "org.spockframework:spock-core:1.0-groovy-2.4", { 
     exclude module: "groovy-all" 
    } 
    testCompile "org.gebish:geb-spock:0.10.0" 
    // Geb integration 

    testCompile "org.seleniumhq.selenium:selenium-chrome-driver:2.51.0" 
    testCompile "org.seleniumhq.selenium:selenium-firefox-driver:2.51.0" 
    testCompile("com.codeborne:phantomjsdriver:1.2.1") { 
     // phantomjs driver pulls in a different selenium version 
     transitive = false 
    } 

vuetest.gtpl

layout 'layouts/main.gtpl',         
    title: 'Vue Test',         
    bodyContents: contents { 
     div('id':'main'){ 
      p "The result is:" 
      vuetest{} 
     } 

    } 

VueTest.js

Vue.component('vuetest', { 
    template: '<p>Hello from Vue</p>' 
}) 

VueTestPage.groovy

import geb.Page 

class VueTestPage extends Page { 

    static url = "/" 

    static at = { title == "Vue Test" } 

    static content = { 
    vueGreeting(required:false){$('p',text:"Hello from Vue").text()} 
    } 
} 

ГЭБ тест

 def "vue testing"(){ 
    when: 
    to VueTestPage 
    then: 
    at VueTestPage 
    waitFor(vueGreeting.displayed) //fails 
    } 

ответ

1

Это больше Геба вопрос. Когда я воспроизвел свои шаги, которые я получил сообщение о том:

Caused by: groovy.lang.MissingPropertyException: No such property: displayed for class: java.lang.String

Который имеет смысл, учитывая, что вы просили vueGreeting(required:false){$('p',text:"Hello from Vue").text()}

Вы можете либо изменить содержание, чтобы быть vueGreeting(required:false){$('p',text:"Hello from Vue")} для того, чтобы использовать vueGreeting.displayed

или с оригиналом vueGreeting определение изменить спецификацию сказать

then: 
waitFor { 
    vueGreeting == 'Hello from Vue' 
} 

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

  • Нет связанных вопросов^_^