【发布时间】:2018-06-09 03:27:16
【问题描述】:
我现在正在使用 Dashing/Smashing 构建一个应用程序,并且我正在使用 rspec 来测试我的代码。但是,我无法弄清楚如何检查 send_event 是否被调用。我试过了
expect(Sinatra::Application).to receive(:send_event).twice
和
expect(Dashing).to receive(:send_event).twice,
但都没有工作。我不确定哪个对象应该接收到send_event 的调用,因为它位于app.rb 的Dashing 内部。还有this issue,在讲同样的事情,在Dashing GitHub上没有回答。
任何关于如何做到这一点的建议将不胜感激。谢谢!
更新:
我还没有弄清楚如何做到这一点,但我发现这是可行的:
let(:dummy_class) { Class.new { include Dashing } }
context 'something' do
it 'does something' do
expect(dummy_class).to receive(:send_event).once
dummy_class.send('send_event', 'test', current: 'test')
end
end
但是,如果我使用我想要调用的包含send_event 的方法而不是使用dummy_class.send(...),那么它不会识别出该方法已被调用。这一定与我的测试不使用虚拟类有关。我不知道有没有办法解决这个问题并让它使用虚拟类。
【问题讨论】:
标签: ruby testing rspec jobs dashing