作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我想在 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
最佳答案
根据模拟框架,语法会有所不同,但您要完成的是在 Controller 的任何实例 上添加一个方法。在 RSpec 中,你有 this .所以根据你的尝试:
Given /^hard disk space is low$/ do
SubmissionsController.any_instance.should_receive(:space_available_mb).and_return(5)
end
如果你打算使用任何其他模拟框架,那么一定会有像 RSpec 的 any_instance
这样的方法。
关于ruby-on-rails - 如何在 cucumber 中 stub 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9390220/
我是一名优秀的程序员,十分优秀!