【问题标题】:Writing Spec for singleton class RSpec为单例类 RSpec 编写规范
【发布时间】:2018-07-18 13:40:47
【问题描述】:

我在单例类中有一些方法需要在 Ruby on Rails 上编写 rspec。 这是示例类

class Logger
  class << self
    def log(event, msg)
      data = Helper.send(event, msg)
      PublishJob.perform(data)
    end
  end
end

如何编写一个名为 Helper.send... 的测试方法并运行作业?

谢谢大家

【问题讨论】:

标签: ruby-on-rails ruby rspec singleton


【解决方案1】:

您可以通过存根类的方法来测试Logger 调用Helper 和PublishJob:

describe Logger do
  let(:event) { double("Event") }
  let(:msg) { double("Message") }
  let(:data) { double("Data") }

  before do
    allow(Helper).to receive(:send).and_return(data)
    allow(PublishJob).to receive(:perform)
  end

  before { Logger.log(event, msg) }

  it "sends a message and performs a job" do
    expect(Helper).to have_received(:send).with(event, msg)
    expect(PublishJob).to have_received(:perform).with(data)
  end
end

并且执行作业的详细信息,可以在作业本身的规范文件中进行测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多