我正在尝试在 RSpec 中测试一个对象。我想在前后检查多件事,所以我按照我在网上找到的示例进行操作,结果如下:
describe Processor do
before(:each) do
# create some data in temp to run the test against
end
after(:each) do
# wipe out the data we put in temp
end
let(:processor) { Processor.new }
describe '#process' do
subject { lambda { processor.process } }
# it should actually perform the processing
it { should change { count('...') }.from(0).to(1) }
it { should change { count('...') }.from(0).to(2) }
# it should leave some other things unaffected
it { should_not change { count('...') } }
end
end
这确实有效,但我看到的是before()
代码和#process
速度都很慢 - 并且由 RSpec 执行三次。
通常当你有一个缓慢的东西时,人们会说“只是模拟它”,但这一次,我想要测试的正是它是缓慢的,所以那是没有意义的。
在所有检查都是前后变化的情况下,如何避免多次调用测试主题?