1

有谁知道如何使用 Rspec 测试 Unpermitted 参数的日志记录。

我曾尝试将 Rails.logger.should_receive() 与 :warn, :info, :error 一起使用,但我似乎无法捕获日志消息。

这是控制器测试:

describe Api::V2::ItemsController do

  before do
    @item = FactoryGirl.create(:item)
    @user_id = @item.user_id
    @invalid_user_id = @user_id + 1
  end

  it 'should not assign user_id' do
    put :update, id: @item.id, item: { user_id: @invalid_user_id }
    assigns(:item).user_id.should == @user_id
  end

  it 'should write "Unpermitted parameters: user_id" to log' do
    Rails.logger.should_receive(:warn).with("Unpermitted parameters: user_id")
    put :update, id: @item.id, item: { user_id: @invalid_user_id }
  end

end
4

1 回答 1

2

您是否尝试过:debug

expect(Rails.logger).to receive(:debug).with('...')
# or
# expect(ActionController::Base.logger).to receive(:debug).with('...')

要更改日志级别以发出警告,您可以在任何环境文件中尝试以下配置。

# config/environments/development.rb
# config/environments/production.rb
config.log_level = :warn

更多:调试 Rails 应用程序

于 2014-01-06T18:54:41.520 回答