테스트 환경에서 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.
그것은 [환경] 비트입니다.
나는 질문자의 고통을 공유합니다.여기에는 세 가지 개별적인 질문이 있는데, 그 중 일부는 해결되고 일부는 해결되지 않습니다.
테스트 환경에서 콘솔을 시작하는 방법은 무엇입니까?
최신 레일즈 버전의 경우,
bundle exec rails c test
또는 그것에 대한 대체 구문.test/test_helper.rb가 콘솔 세션에 로드되도록 하려면 어떻게 해야 합니까?
비슷한 것
require './test/test_helper'
그것을 해야 합니다.이 경우 true가 반환되어 콘솔을 시작할 때 아직 로드되지 않았음을 나타냅니다.만약 그 진술이 거짓으로 돌아온다면, 당신은 단지 몇 번의 키 입력을 낭비했을 뿐이지만, 당신은 여전히 할 수 있습니다.
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
'programing' 카테고리의 다른 글
xact_abort가 켜져 있을 때 raise 오류가 발생한 후 SQL Server가 계속 실행되는 이유는 무엇입니까? (0) | 2023.06.03 |
---|---|
CSS 선택기 "~"는 무엇을 의미합니까? (0) | 2023.06.03 |
Ruby에서 정규식의 모든 항목을 일치시키는 방법 (0) | 2023.06.03 |
Passport.js - 오류: 사용자를 세션으로 직렬화하지 못했습니다. (0) | 2023.06.03 |
POSTGRESQL에서 DATE에서 연도를 추출하는 방법 (0) | 2023.06.03 |