ruby-on-rails - 为单例类 RSpec 编写规范
问题描述
我在单例类中有一些方法需要在 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... 的测试方法并运行作业?
谢谢大家
解决方案
您可以测试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
并且执行作业的细节可以在作业本身的规范文件中进行测试。
推荐阅读
- nhibernate - NHibernate - 脱水属性值时出错 - 更新实体
- python - SyntaxError:文件 .pyo 中以“\xbd”开头的非 UTF-8 代码
- offset - 无法确定加载以使用来自不同寄存器的偏移量进行注册
- amazon-web-services - 最新 AWS EC2 实例中的环境变量
- c# - NotifyPropertyChanged 和 ContentControl
- javascript - JavaScript 删除 txt 文档中每 3 行的文本
- angular-material - 我应该如何将数据从我的服务传递到小吃店组件?
- java - Find which url was used to access the controller when multiple url mapping to the same controller method
- c++ - char vs. wchar_t vs. char16_t vs. char32_t
- rest-assured - 放心 - 响应正文验证