相关疑难解决方法(0)

RSpec:如何测试Rails记录器消息期望?

我试图测试Rails记录器在我的一些规范中接收消息.我正在使用Logging gem.

假设我有一个这样的类:

class BaseWorker

  def execute
    logger.info 'Starting the worker...'
  end

end
Run Code Online (Sandbox Code Playgroud)

一个规格如:

describe BaseWorker do

  it 'should log an info message' do
    base_worker = BaseWorker.new
    logger_mock = double('Logging::Rails').as_null_object
    Logging::Rails.stub_chain(:logger, :info).and_return(logger_mock)

    logger_mock.should_receive(:info).with('Starting the worker...')
    base_worker.execute
    Logging::Rails.unstub(:logger)
  end

end
Run Code Online (Sandbox Code Playgroud)

我收到以下失败消息:

 Failure/Error: logger_mock.should_receive(:info).with('Starting worker...')
   (Double "Logging::Rails").info("Starting worker...")
       expected: 1 time
       received: 0 times
Run Code Online (Sandbox Code Playgroud)

我已经尝试了几种不同的方法来让规范通过.这适用于例如:

class BaseWorker

  attr_accessor :log

  def initialize
    @log = logger
  end

  def execute
    @log.info 'Starting the worker...'
  end

end

describe BaseWorker do
  it 'should log an …
Run Code Online (Sandbox Code Playgroud)

logging rspec mocking stubbing

54
推荐指数
5
解决办法
3万
查看次数

标签 统计

logging ×1

mocking ×1

rspec ×1

stubbing ×1