ruby – Rspec无法检查记录器信息输出

我有一个非rails
ruby​​应用程序,它使用logger处理日志输出到stdout.

我想添加规范来检查输出,并找到两种方法来实现它,似乎两种方式都不起作用.

所以两种方式都在这个spec.rb文件中:

require 'rspec' 
require 'logger'

describe 'Logger' do   
  it 'expect to output' do
    expect { Logger.new(STDOUT).info('Hello') }.to output.to_stdout    
  end

  it 'expect to recieve' do
    expect(Logger.new(STDOUT).info('Hello')).to receive(:info)   
  end 
end

我有终端输出日志消息,但两个验证都失败了

最佳答案 我通常只使用这样的双打:

describe 'logging' do
  it 'handles output' do
    logger = double('logger')
    allow(Logger).to receive(:new).and_return(logger)

    run_some_code
    expect(logger).to receive(:info).with("Hello")
  end
end
点赞