我想要在SubmissionsController中桩空space_available_mb方法,使其返回5。但是这样做不起作用。它会返回真实硬盘上的正确空间。
如果注释掉space_available_mb,就会抛出期望错误,这意味着should_receive正常工作。然而,它并没有返回5,而是真实数字,这意味着and_return由于某种原因失败了。
进一步调试发现,and_return实际上被调用了,但只有在方法运行并返回真实数字后才会被调用。
如果注释掉space_available_mb,就会抛出期望错误,这意味着should_receive正常工作。然而,它并没有返回5,而是真实数字,这意味着and_return由于某种原因失败了。
进一步调试发现,and_return实际上被调用了,但只有在方法运行并返回真实数字后才会被调用。
Scenario: Hard Disk Space is low on new submission
Given I am on the new_submission page
And hard disk space is low
Then I should see "Low disk space!"
Given /^hard disk space is low$/ do
SubmissionsController.should_receive(:space_available_mb).and_return(5)
end
class SubmissionsController < ApplicationController
include FileManager
def new
space = space_available_mb
...
end
end
module FileManager
def space_available_mb
...
end
end