programing

테스트 환경에서 Rails 콘솔을 실행하고 test_helper.rb를 로드하는 방법은 무엇입니까?

subpage 2023. 6. 3. 08:28
반응형

테스트 환경에서 Rails 콘솔을 실행하고 test_helper.rb를 로드하는 방법은 무엇입니까?

배경:Thinkbot의 "Factory Girl" 보석은 유닛 및 기타 테스트에 사용할 객체를 만드는 데 사용됩니다.콘솔로 가서 팩토리 걸과 다른 통화를 실행하여 무슨 일이 일어나고 있는지 확인하고 싶습니다.예를 들어, 저는 저 안에 들어가고 싶습니다.

>> Factory(:user).inspect

콘솔을 다른 환경에서 실행할 수 있습니다.

스크립트/실행 RAILES_ENV=테스트

하지만 그럴 때는 팩토리 수업이 불가능합니다.보아하니test_helper.rb로드되지 않습니다.

나는 다양하게 시도했습니다.require에 대한 절대 경로가 있는 통화를 포함한 통화test_helper.rb하지만 이와 유사하게 실패합니다.

$ script/console RAILS_ENV=test
>> require '/Users/ethan/project/contactdb/test/test_helper.rb'
  Errno::ENOENT: No such file or directory - 
  /Users/ethan/project/contactdb/config/environments/RAILS_ENV=test.rb

아그 선생님

레일 < 3.0의 경우

달려.script/console --help구문은 다음과 같습니다.script/console [environment]당신의 경우는.script/console test.

테스트 도우미가 필요한지 테스트 환경에서 필요한지는 모르겠지만 이 명령을 사용하면 테스트 환경에서 성공적으로 부팅할 수 있어야 합니다.

참고로:스크립트의 다양한 바이너리가/ 레일 환경을 설정하는 방법이 다르다는 것은 정말 이상합니다.

레일 3 및 4의 경우

달려.rails c test프레펜드bundle exec현재 앱 환경에 필요한 경우.

레일 5 및 6의 경우

달려.rails console -e test.

레일 3에서는 다음을 수행합니다.rails console test또는rails console production또는rails console development(기본값).

Rails 5.2.0의 경우: "환경의 이름을 정규 인수로 전달하는 것은 더 이상 사용되지 않으며 다음 Rails 버전에서 제거됩니다.대신 -e 옵션을 사용하십시오."

rails c -e test
script/console test

필요한 것만 있으면 됩니다.

콘솔 명령이 작동할 환경을 지정할 수 있습니다.

rails c [environment]

준비용

rails c staging

생산용

rails c production

출처 및 자세한 설명:레일즈 명령줄

데이비드 스미스가 맞아요, 그냥 하세요.

script/console test

help 명령은 이 기능이 작동하는 이유를 보여줍니다.

$ script/console -h
Usage: console [environment] [options]
    -s, --sandbox                    Rollback database modifications on exit.
        --irb=[irb]                  Invoke a different irb.
        --debugger                   Enable ruby-debugging for the console.

그것은 [환경] 비트입니다.

나는 질문자의 고통을 공유합니다.여기에는 세 가지 개별적인 질문이 있는데, 그 중 일부는 해결되고 일부는 해결되지 않습니다.

  1. 테스트 환경에서 콘솔을 시작하는 방법은 무엇입니까?

    최신 레일즈 버전의 경우,bundle exec rails c test또는 그것에 대한 대체 구문.

  2. test/test_helper.rb가 콘솔 세션에 로드되도록 하려면 어떻게 해야 합니까?

    비슷한 것require './test/test_helper'그것을 해야 합니다.

    이 경우 true가 반환되어 콘솔을 시작할 때 아직 로드되지 않았음을 나타냅니다.만약 그 진술이 거짓으로 돌아온다면, 당신은 단지 몇 번의 키 입력을 낭비했을 뿐이지만, 당신은 여전히 할 수 있습니다.

  3. test_helper가 로드되면 정의된 메서드를 어떻게 부르시겠습니까?

    일반적인 test_helper에서 사용자 지정 메서드는 일반적으로 ActiveSupport의 인스턴스 메서드로 정의됩니다.테스트 사례.그래서 그들 중 한 명을 부르고 싶다면, 그 클래스의 인스턴스가 필요합니다.시행착오를 겪으면서 ActiveSupport:TestCase.new에는 하나의 필수 매개 변수가 있으므로... 전달하십시오.

    test_helper"create_user"라는 할 수 .ActiveSupport::TestCase.new("no idea what this is for").create_user

GEM을 설치하고 environment.rb 또는 test.rb 파일에 다음 행을 추가했는지 확인합니다.

config.gem "thoughtbot-factory_girl", :lib => "factory_girl", :source => "http://gems.github.com"

테스트 환경

rails console test # or just rails c test

개발 환경

rails console # or just rails c

레일 콘솔 테스트 환경을 실행하는 명령은 다음과 같습니다.

rails c -e test

또는

RAILS_ENV=test rails c

만약 당신이 문제에 직면하고 있다면 같은 것.

ActiveRecord::StatementInvalid:
   Mysql2::Error: Table 'DB_test.users' doesn't exist: SHOW FULL FIELDS FROM `users`

그러면 먼저 테스트 DB를 실행하여 준비해야 합니다.

bundle exec rake db:test:prepare

언급URL : https://stackoverflow.com/questions/1050047/how-to-run-rails-console-in-the-test-environment-and-load-test-helper-rb

반응형