rspec에서 루비 디버그를 실행 중입니까?
내 사양 중 하나에서 Ruby 디버거를 실행하려고합니다.
describe User do
it "should be valid" do
debugger
User.new.should be_valid
end
end
그래도 rspec을 실행하면 다음을 얻습니다.
debugger statement ignored, use -d or --debug option to enable debugging
나는 다음을 시도했다 :
rake spec --debug
rake spec --debug --trace
rake spec:models --debug
bundle exec rspec --debug
bundle exec rspec --debug spec/models/
bundle exec rspec --d spec/models/
bundle exec "rspec --debug" spec/models/
bundle exec rspec --debugger spec/models/
bundle exec --debugger rspec spec/models/
bundle --debugger exec rspec spec/models/
bundle --debugger exec rspec spec/models/
bundle exec --debugger rspec spec/models/
bundle exec rspec --debugger spec/models/
rspec을 올바른 방법으로 실행하는 방법에 대한 아이디어가 있습니까? 저는 Rails 3.0.5, Ruby 1.9.2, RSpec 2.5.1, ruby-debug19에 있습니다.
고마워, 저스틴.
require 'ruby-debug'
사양 상단에 다음 을 포함하여 원하는 것을 얻을 수 있습니다 .
# spec/models/user_spec.rb
require 'spec_helper'
require 'ruby-debug'
describe User do
it "should be valid" do
debugger
User.new.should be_valid
end
end
그런 다음 실행 rake spec
하거나 rspec
정상적으로
참고 : 저는 이제 Ruby 2.0 이상을 선호하며 훔쳐 봅니다. 거의 동일한 과정입니다.
require 'spec_helper'
require 'pry-debugger'
describe User do
it "should be valid" do
binding.pry
expect(User.new).to be_valid
end
end
또한 일반적으로 spec_helper 파일에 이와 같은 요구 사항을 입력하여 모든 사양에서 pry-debugger를 사용할 수 있습니다.
.rspec
프로젝트의 루트에 구성 파일을 만들고 다음 줄을 포함 할 수 있습니다.
--debug
Ruby의 경우> = 1.9.2
ruby-debug19 대신 debugger gem을 설치해야합니다 . bundler 를 사용 하면 Gemfile에 넣습니다.
group :test do
gem "debugger"
end
그 후에 그냥 넣어
rspec <3.0
--debug
rspec> = 3.0
-rdebugger
당신의 .rspec
파일에
그런 다음 그냥 실행할 수 있습니다
bundle exec rake spec
추가 인수없이. 소스 코드를 수정할 필요 도 없습니다 (테스트 소스 코드도 아님).
루비 2.0의 경우 byebug를 사용합니다 : https://github.com/deivid-rodriguez/byebug
gem 'byebug'
암호:
# spec/models/user_spec.rb
require 'spec_helper'
require 'byebug'
describe User do
it "should be valid" do
byebug
User.new.should be_valid
end
end
rSpec에서 디버깅하는 가장 좋은 방법은 'spec_helper.rb'파일에 다음을 추가하는 것입니다.
def logger
Rails.logger
end
You can then access all the logger methods within your rSpec files and incorporate such things as tagged logging. This of course is for Rails 3 and up. If you have anything prior to Rails 3 then add this instead:
def logger
RAILS_DEFAULT_LOGGER
end
Once you have your logging statements in place you can enter
tail -f log/test.log
in your terminal shell in order to watch your logging statements while the tests are run.
Of course in your actual rspec test you would enter something such as
logger.debug "#{1.class}" # => Fixnum
If you want to filter your debug statements from the rest of your test log simply prepend a random string on to your debug statement and pipe the output of the tail command to grep.
Example:
logger.debug "random_string #{1.class}" # => Fixnum
tail -f log/test.log | grep random_string
Update
I've changed my opinion on this. You should install pry, pry-doc, and pry-debug, pry-debugger, and pry-rails. Then use binding.pry in your code to open an interactive debugger console that rules the world!
The best and cleanest option is to use --require
in your .rspec
file. What you put depends on which gem you use for debugging.
--color
--require pry
--require rails_helper
These correspond to command line options (-d or --debug is now deprecated).
Feel free to use debugger
, ruby-debug
or pry
(pry-rails in your Gemfile).
For your Gemfile:
group :test, :development do
gem 'pry-rails'
end
Putting require 'ruby-debug'
etc. at the top of your spec is simply more tightly coupled -- especially since here the top voted comment suggests putting it individually in ALL your files. With the new .rspec
file you shouldn't need to put require 'spec_helper'
or require 'rails_helper'
at the top of your files anymore.
They make more sense as implicit command line arguments.
참고URL : https://stackoverflow.com/questions/5446594/running-ruby-debug-in-rspec
'Programing' 카테고리의 다른 글
천 단위 구분 기호로 쉼표가있는 경우 문자열을 숫자로 변환하는 방법은 무엇입니까? (0) | 2020.10.19 |
---|---|
mailto : (to) 부분이없는 링크를 어떻게 만드나요? (0) | 2020.10.19 |
IntelliJ에서 빌더 패턴 코드 생성 (0) | 2020.10.19 |
Entity Framework : 특정 쿼리에 대해 지연로드를 비활성화하는 방법은 무엇입니까? (0) | 2020.10.19 |
STDOUT과 STDERR 모두 터미널과 로그 파일로 이동하려면 어떻게해야합니까? (0) | 2020.10.19 |