簡體   English   中英

Rails測試錯誤時抑制堆棧跟蹤

[英]Suppressing stack trace when Rails tests error

我是Ruby on Rails的新手,正在編寫測試。 其中一些會產生異常。 我希望“ rake測試”輸出為我提供異常錯誤消息,而不是整個回溯。 (我想編寫行使未實現功能的測試,然后再填寫。)

例如,實際輸出:

Started
E
Finished in 0.081054 seconds.

  1) Error:
test_should_fail(VersioningTest):
ActiveRecord::StatementInvalid: PGError: ERROR:  null value in column "client_ip" violates not-null constraint
: INSERT INTO "revisions" ("created_at", "id") VALUES ('2011-02-03 20:14:17', 980190962)
    /Users/rpriedhorsky/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract_adapter.rb:202:in `rescue in log'
    /Users/rpriedhorsky/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/connection_adapters/abstract_adapter.rb:194:in `log'
    /Users/rpriedhorsky/.rvm/gems/ruby-1.9.2-p136/gems/activerecord-3.0.3/lib/active_record/connection_adapters/postgresql_adapter.rb:496:in `execute'
    [... etc. etc. etc. ...]

1 tests, 0 assertions, 0 failures, 1 errors, 0 skips

所需的輸出:

Started
E
Finished in 0.081054 seconds.

  1) Error:
test_should_fail(VersioningTest):
ActiveRecord::StatementInvalid: PGError: ERROR:  null value in column "client_ip" violates not-null constraint

1 tests, 0 assertions, 0 failures, 1 errors, 0 skips

我在相反的方向上找到了信息( 例如 ),但沒有找到抑制堆棧跟蹤的信息。

編輯:

輕松打開和關閉它們會很好。 如下所述,有時它們對於跟蹤錯誤很有用。

您可以看一下“回溯消音器”-對我來說(Rails 2.3.8),這是文件config / initializers / backtrace_silencers.rb:

# Be sure to restart your server when you modify this file.

# You can add backtrace silencers for libraries that you're using but
# don't wish to see in your backtraces.
# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }

# You can also remove all the silencers if you're trying do debug a
# problem that might steem from framework code.
# Rails.backtrace_cleaner.remove_silencers!

Rails.backtrace_cleaner.add_silencer {|line| line =~ /gems/}
Rails.backtrace_cleaner.add_silencer {|line| line =~ /passenger/}

看來您應該能夠像

Rails.backtrace_cleaner.add_silencer {|line| true}

在您的config / environments / test.rb文件中,這將清除回溯痕跡(盡管它可能僅適用於記錄器-我對這種方法不是很熟悉)。

但是問問自己-您真的要完全消除回溯嗎? 它們對於跟蹤錯誤很有用...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM