【问题标题】:RSpec: how to expect ordered messages on two different objects?RSpec:如何期望两个不同对象上的有序消息?
【发布时间】:2014-07-10 13:25:41
【问题描述】:

如何期望两个不同对象上的有序消息?目前我有这样的事情:

call_order = ''

expect(double1).to receive(:msg1) { call_order += '1' }
expect(double2).to receive(:msg2) { call_order += '2' }

expect(call_order).to eq '12'

我知道我可以预期单个对象上的有序消息使用:

expect(double).to receive(:msg).ordered
expect(double).to receive(:other_msg).ordered

【问题讨论】:

    标签: ruby-on-rails ruby unit-testing rspec


    【解决方案1】:

    根据doc,rspec 3 允许它

    collaborator_1 = double("Collaborator 1")
    collaborator_2 = double("Collaborator 2")
    
    expect(collaborator_1).to receive(:step_1).ordered
    expect(collaborator_2).to receive(:step_2).ordered
    expect(collaborator_1).to receive(:step_3).ordered
    
    collaborator_1.step_1
    collaborator_2.step_2
    collaborator_1.step_3
    
    #=> the examples should all pass 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-15
      相关资源
      最近更新 更多