【发布时间】:2012-03-12 12:15:30
【问题描述】:
我想删除 SubmissionsController 中的 space_available_mb 方法,使其返回 5。这不起作用。它返回真实硬盘上的正确空间。
如果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
【问题讨论】:
-
this 对您有帮助吗?
-
@farnoy 解释了如何创建模拟对象。在这种情况下,我需要存根控制器方法。
-
请注意,这通常不是一个好主意。 Cucumber 通常应该测试完整的堆栈。您的用例(实际上是在尝试对外部服务进行存根)大约是唯一可取的情况。
标签: ruby-on-rails ruby rspec cucumber stub