######概要
docker開発環境でRSpecテスト環境を構築するやり方の備忘録としてまとめました。
独学なので間違っている部分があると思いますが、その時はご指摘頂けると嬉しいです。
以下の記事を参考にしました。
https://qiita.com/at-946/items/e96eaf3f91a39d180eb3
https://qiita.com/na-tsune/items/91630257294aa0ea4fc8
##1.docker-compose.ymlの編集
docker-compose.yml
version: '3'
services:
db:
image: mysql:5.7
environment:
MYSQL_USER: root
MYSQL_ROOT_PASSWORD: password
ports:
- "3306:3306"
volumes:
- ./db/mysql/volumes:/var/lib/mysql
web:
build: .
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
volumes:
- .:/myapp
- gem_data:/usr/local/bundle
ports:
- 3000:3000
depends_on:
- db
- chrome # ←追加
tty: true
stdin_open: true
chrome:
image: selenium/standalone-chrome:latest
ports:
- 4444:4444
volumes:
gem_data:
web:配下のdepends_onに-chromeを追記。
services:配下にchrome:以下を追記。
##2.RSpecの導入
Gemfileに必要なgemを追記
Gemfile
group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
gem 'pry-rails'
gem 'pry-byebug'
#rspec用のgem 2つ追記
gem 'rspec-rails', '~> 4.0.1'
gem 'factory_bot_rails', '~>4.11'
end
dockerのbuild, up, gemのインストール,Rspecのインストールをする。
$ docker-compose run web bundle install
$ docker-compose build
$ docker-compose up
$ docker-compose run web rails g rspec:install
次に、
RSpecのインストールによって作成されるファイルの中に、"rails_helper.rb"の設定を記述していきます。ついでにtestディレクトリは削除しておく。
/spec/rails_helper.rb
#↓追記
Capybara.register_driver :remote_chrome do |app|
url = "http://chrome:4444/wd/hub"
caps = ::Selenium::WebDriver::Remote::Capabilities.chrome(
"goog:chromeOptions" => {
"args" => [
"no-sandbox",
"headless",
"disable-gpu",
"window-size=1680,1050"
]
}
)
Capybara::Selenium::Driver.new(app, browser: :remote, url: url, desired_capabilities: caps)
end
#↑追記
#↓追記
config.before(:each, type: :system) do
driven_by :rack_test
end
config.before(:each, type: :system, js: true) do
driven_by :remote_chrome
Capybara.server_host = IPSocket.getaddress(Socket.gethostname)
Capybara.server_port = 4444
Capybara.app_host = "http://#{Capybara.server_host}:#{Capybara.server_port}"
end
#↑追記
最後に.rspecを編集して、rails_helper.rbの設定を読み取るようにします。
.rspec
--require spec_helper #削除する
--require rails_helper #追記
あとはテスト記述、実行できるか確認する。
$ docker-compose run web rspec [rspecテストファイルのpath]