ryush00 / capstone

1 stars 0 forks source link

마진 추가, 로그인 공통 링크추가 #52

Closed Yang0Jin0Woo closed 4 days ago

Yang0Jin0Woo commented 4 days ago

작업 내용

스크린샷

리뷰 시 참고사항

Yang0Jin0Woo commented 4 days ago

image

CI/test에서 누락된 " 추가하고 다시 pr하니까 아직도 CI/test 오류가 발생합니다.

밑은 gpt에 문의한 결과 입니다.

문제 분석

현재 발생한 문제는 Rails 테스트를 실행하는 동안 여러 개의 NoMethodError가 발생한 것입니다. 주요 원인은 placespools 메서드가 정의되지 않았기 때문입니다.

에러 메시지 요약:

NoMethodError: undefined method `places' for an instance of PlacesControllerTest
NoMethodError: undefined method `pools' for an instance of PoolsControllerTest

이 문제는 places_controller_test.rbpools_controller_test.rb 파일에서 컨트롤러 테스트를 실행할 때 발생합니다. ActiveRecord 모델(PlacePool)이 제대로 연결되지 않았거나, 테스트에서 잘못된 접근 방식을 사용하고 있기 때문일 수 있습니다.


해결 방법

1. 테스트에서 올바른 메서드 사용

수정 예시 (places_controller_test.rb):

require "test_helper"

class PlacesControllerTest < ActionDispatch::IntegrationTest
  setup do
    @place = places(:one) # fixtures 파일을 사용하여 초기화
  end

  test "should get index" do
    get places_url
    assert_response :success
  end

  test "should get new" do
    get new_place_url
    assert_response :success
  end

  test "should create place" do
    assert_difference('Place.count') do
      post places_url, params: { place: { name: 'New Place', location: 'Location' } }
    end
    assert_redirected_to place_path(Place.last)
  end

  test "should show place" do
    get place_url(@place)
    assert_response :success
  end

  test "should get edit" do
    get edit_place_url(@place)
    assert_response :success
  end

  test "should update place" do
    patch place_url(@place), params: { place: { name: 'Updated Name' } }
    assert_redirected_to place_path(@place)
  end

  test "should destroy place" do
    assert_difference('Place.count', -1) do
      delete place_url(@place)
    end
    assert_redirected_to places_url
  end
end

2. 테스트 데이터베이스 설정 확인

bin/rails db:test:prepare

3. 테스트를 로컬에서 실행하여 문제 확인

bin/rails test

4. Fixtures 파일 확인

예시 (places.yml):

one:
  name: "Test Place"
  location: "Test Location"
  user_id: 1

예시 (pools.yml):

one:
  pool_type: "carpool"
  user_id: 1
  start_at: <%= Time.zone.now %>
  end_at: <%= Time.zone.now + 2.hours %>
  start_place_id: 1
  end_place_id: 2
  user_max: 4
  user_min: 2

추가로 해결해야 할 사항 (Deprecation Warning)

DEPRECATION WARNING: `to_time` will always preserve the full timezone rather than offset of the receiver in Rails 8.1.

Rails 8.1로 업그레이드하면서 to_time 동작 방식이 변경될 예정입니다. 이 문제를 해결하려면 config/application.rb에 다음 설정을 추가하세요:

# config/application.rb
config.active_support.to_time_preserves_timezone = :zone

정리

이제 문제를 해결하고 GitHub Actions에서 다시 테스트를 실행해보세요! 🚀

ryush00 commented 4 days ago

schema.rb 큰따옴표 누락(a01442f18d39ad9bf9729c2aa6ee963dc827b7c3), 테스트 파일 오류(545a99e480b6028e03420ce76c1b2d7ea1fada7d)등 수정했습니다.