ruby-on-rails - 使用 rspec 测试该方法在另一个方法中被调用

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

我必须为以下方法编写规范:

def track_event
  tracker = set_tracker
  category = define_event_category
  tracker.event(category: category, action: name, label: properties['short_name'], value: properties['paid'])
end

具体来说,当 track_event 被调用时,我必须检查方法 event 是否在变量 tracker 上被调用。我试着这样做:

describe '#track_event' do
  it 'should call event method' do
    expect(tracker).to receive(:event)
  end
end

并得到一个错误undefined local variable or method 'tracker'。我做错了什么?

最佳答案

您不能访问 tracker,因为它是一个局部变量。

您可以 stub 您的 set_tracker 方法并返回一个 instance double :

describe '#track_event' do
  let(:tracker_double) { instance_double(Tracker) }

  it 'should call event method' do
    allow(foo).to receive(:set_tracker).and_return(tracker_double)
    expect(tracker_double).to receive(:event)
    foo.track_event
  end
end

foo 是您的测试对象。<​​/p>

关于ruby-on-rails - 使用 rspec 测试该方法在另一个方法中被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50022646/

相关文章:

ruby-on-rails - 生成布伦特里收据

ruby-on-rails - rails : Catch a request in a scope when the request doesn't match anything in the scope

ruby-on-rails - Rails : render doesn't work, 仍然得到 `Template is missing`

ruby-on-rails - FactoryGirl 创作不会出现在 Selenium 测试中

testing - FIFO信号量测试

mysql - 使用 Ruby 在两个表之间查询

ruby-on-rails - 找不到 rails pg_config 路径

ruby-on-rails - slim 中的局部变量三元赋值

Ruby Rye,执行 ps -aux shell 命令时出现 Method Missing 错误

node.js - 使用 Node 生成唯一的测试数据