2017-10-19 6 views
0

Ich muss die ActionCable-Funktionalität in einer dockerisierten Rails-App testen, die JS-Tests mit Poltergeist (PhantomJS) ausführt.Wie kann man ActionCable mit Capybara und Poltergeist in Docker testen?

Ich habe selen-webdriver, chromedriver, kopfloses Chrom versucht ... nichts funktioniert.

Und natürlich, Puma als Capybara Server einstellen.

+0

Was meinen Sie mit "funktioniert nicht", welche Fehler bekommen Sie? Was sind deine Treiberkonfigurationen? Was ist dein Capybara-Setup? Was ist Ihre Rails-Konfiguration, führen Sie ein laufendes Aktionskabel in der Testumgebung aus? –

+0

@ThomasWalpole Ich werde alle Konfiguration in die Frage stellen, sorry. Was meinst du mit laufendem Aktionskabel in der Testumgebung? Ich weiß nicht, wie ich das machen soll. ActionCable wird im Redis-Adapter in allen Umgebungen ausgeführt. Danke für Ihre Hilfe. –

Antwort

0

Ich fand die Lösung. Das Problem trat auf, weil ich meine App mit orats generierte und das ActionCable vom Webserver getrennt vorkonfigurierte (als separaten Andock-Container).

folgendes hinzugefügt funktioniert:

# rails_helper.rb 
Capybara.server = :puma 

# docker-compose.yml 
services: 
    ... 
    tests: 
    depends_on: 
     - 'redis' 
     - 'postgres' 
     - 'box' 
    build: . 
    volumes: 
     - '.:/app' 
    volumes_from: 
     - box # busybox image to cache bundle install 
    env_file: 
     - '.env' 
    environment: 
     RAILS_ENV: test 
     ACTION_CABLE_MOUNT: '/cable' 
    command: /bin/true 

# config/environments/test.rb 
config.action_cable.url = nil 
config.action_cable.mount_path = ENV["ACTION_CABLE_MOUNT"] 

Dann

docker-compose run tests bundle exec rspec 

Voila laufen!

Verwandte Themen