実現したいこと
circel ciで落ちている、rspecのテストを通す方法を知りたい
困っていること
ローカルではreqeust rspecが通るのにgitにプッシュ後に走るcircle ciでなぜか落ちてしまう。
原因を私なりに調べてみると。context 'パラメータが妥当な場合: ログイン成功' do
では特に問題がなくcircle ci
は通るのに対してcontext 'パラメータが不当な場合: ログイン失敗' do
の時だけ落ちてしまします。(ローカルでは二つとも通ります。
ruby
1require 'rails_helper' 2 3RSpec.describe "Users::session", type: :request do 4 describe "POST /users session" do 5 let(:user) { create(:user) } 6 let(:valid) { { user: { email: user.email, password: user.password } } } 7 let(:invalid) { { user: { email: user.email, password: '99999' } } } 8 9 context 'パラメータが妥当な場合: ログイン成功' do 10 it 'リクエストが成功すること' do 11 post user_session_path, params: valid 12 expect(response).to have_http_status(302) 13 end 14 end 15 context 'パラメータが不当な場合: ログイン失敗' do 16 it 'リクエストが成功すること' do 17 post user_session_path, params: invalid 18 expect(response).to have_http_status(200) 19 end 20 end 21 end 22end
原因箇所
circle
1#!/bin/bash -eo pipefail 2bundle exec rspec --profile 10 \ 3 --out /tmp/test-results/rspec.xml \ 4 --format progress \ 5 $(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings) 6Error reading historical timing data: file does not exist 7Requested weighting by historical based timing, but they are not present. Falling back to weighting by name. 8*..**..../home/circleci/funspo/vendor/bundle/bin/rspec --profile 10 --out /tmp/test-results/rspec.xml --format progress spec/models/address_spec.rb spec/models/admin_spec.rb spec/models/answer_spec.rb spec/models/booking_spec.rb spec/models/review_spec.rb spec/models/user_spec.rb spec/requests/admins_spec.rb spec/requests/donations_spec.rb spec/requests/likes_spec.rb spec/requests/payments_spec.rb spec/requests/reviews_spec.rb spec/requests/top_spec.rb spec/requests/users/registrations_spec.rb spec/requests/users/sessions_spec.rb spec/requests/users_spec.rb: symbol lookup error: /home/circleci/funspo/vendor/bundle/gems/mini_racer-0.2.6/lib/mini_racer_extension.so: undefined symbol: _ZN2v82V813InitializeICUEPKc 9Exited with code exit status 127 10CircleCI received exit code 127 11
#追記
ログイン周りはdeviseというgemを使用しており、session controllerに関してはデフォルトで使用しています。
ruby
1# frozen_string_literal: true 2 3class Users::SessionsController < Devise::SessionsController 4 # before_action :configure_sign_in_params, only: [:create] 5 6 # GET /resource/sign_in 7 # def new 8 # super 9 # end 10 11 # POST /resource/sign_in 12 # def create 13 # super 14 # end 15 16 # DELETE /resource/sign_out 17 # def destroy 18 # super 19 # end 20 21 # protected 22 23 # If you have extra params to permit, append them to the sanitizer. 24 # def configure_sign_in_params 25 # devise_parameter_sanitizer.permit(:sign_in, keys: [:attribute]) 26 # end 27end
回答1件
あなたの回答
tips
プレビュー