方法存根于 before(:all)

2024-03-25

require './spec/spec_helper'
require './bank'

describe Bank do
  context "#transfer" do
    before(:all) do
      @customer1 = Customer.new(500)
      customer2 = Customer.new(0)
      @customer1.stub(:my_money).and_return(1000)
      customer2.stub(:my_money).and_return(0)
      @transfer_message = Bank.new.transfer(@customer1, customer2, 2000)
    end 

    it "should return insufficient balance if transferred amount is greater than balance" do
      expect(@transfer_message).to eq("Insufficient funds")
    end 

    it "calls my_money" do
      expect(@customer1).to have_received(:my_money)
    end 
  end 
end

当我使用before(:each)反而before(:all)有用。但如果使用before(:all)它会抛出错误undefined method proxy_for for nil:NilClass。我找不到原因。请你帮助我好吗?提前致谢。


聚会迟到了?是的,但我不介意从我的发现中拿出我自己的一分钱。我在尝试存根请求时遇到了类似的错误RSpec.configure块,以便存根仅可用于我传递的示例config.around(:each, option)选项到.

所以,这意味着我在单个示例的范围之外使用了存根,这是不受支持的RSpec::Mocks here https://relishapp.com/rspec/rspec-mocks/docs/basics/scope!.解决方法是在上下文中使用临时作用域。

所以你有了

before(:all) do
  RSpec::Mocks.with_temporary_scope do
    @customer1 = Customer.new(500)
    customer2 = Customer.new(0)
    @customer1.stub(:my_money).and_return(1000)
    customer2.stub(:my_money).and_return(0)
    @transfer_message = Bank.new.transfer(@customer1, customer2, 2000)
  end
end

HTH!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

方法存根于 before(:all) 的相关文章

随机推荐

  • 根据另一个列值启用或禁用剑道网格列

    我有一个剑道网格 其中有一个复选框 它是使用客户端模板呈现的 如果选中该复选框 那么我希望启用与其相邻的列 如果未选中该复选框 则应禁用该列 即用户不应该能够对其进行编辑或键入 我尝试通过将编辑事件绑定到网格来实现此目的 但仅当网格进入编辑
  • Axios请求拦截器等待ajax调用完成

    我有一个用于 axios 调用的请求拦截器 它检查我的 jwt 令牌并在必要时调用刷新 axios interceptors request use config gt const state store getState get rene
  • PHPUnit 没有捕获预期的异常

    我有一组测试 我想测试我的类是否在正确的时间抛出异常 在示例中 我的类使用 get 魔术方法 因此我需要测试检索无效属性时是否引发异常 function testExceptionThrownWhenGettingInvalidProper
  • 使用嵌入式 Microsoft Query 在 Excel Mac 2016 ODBC 连接中存储密码

    我正在构建一个 Excel Mac 2016 文件 该文件使用嵌入的 Microsoft Query 服务与 SQL Server 的多个连接 问题是我无法在连接中存储密码 每次打开文件时 Excel 都会询问每个连接的密码 尽管它始终相同
  • 如何从 XML 数据中删除非 ASCII 字符

    我有一些采用以下格式的 XML 数据 我的应用程序应该使用 XMLReader 读取此内容并对其进行一些处理 但是 为了实现这一点 我需要删除或替换每行的第一部分 特别是 lt lt
  • 在 Bash 中将一个字符替换为另一个字符

    我需要替换一个空格 带有一个点 在 bash 中的字符串中 我认为这非常简单 但我是新手 所以我不知道如何修改此用途的类似示例 使用内联 shell 字符串替换 例子 foo replace first blank only bar foo
  • 使用 Visual Studio Code 调试 ExpressJS 服务器端代码

    我使用以下方法制作了一个简单的 CRUD 应用程序 快车 4 13 4 吞咽 3 9 1 蒙戈数据库 v3 0 6 反应js 15 0 2 节点 4 0 0 对于服务器端代码 我听说可以通过调试Visual Studio 代码 v1 1 1
  • 有没有一个插件可以让我自动取消网站上包含的 Javascript? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有一个插件 附加组件 Greasemonkey 脚本或类似的东西 最坏的情况是一个易于使用的代理 取
  • C# 在默认浏览器中打开网页并发布数据

    我确信之前一定已经回答过这个问题 但我找不到解决方案 所以我想我可能误解了其他人的解决方案或试图做一些愚蠢的事情 但我们开始了 我正在用 C 编写 Outlook 2010 的加载项 用户可以单击功能区中的按钮并将电子邮件内容提交到网站 当
  • Javascript rowIndex 方法不起作用

    我正在使用 TR 的 rowIndex 属性 但它不起作用 如果我在这里做错了什么 请告诉我 function myMethod alert this parent rowIndex parentNode is also used Html
  • jQuery 验证未捕获类型错误:无法调用未定义的方法“getAttribute”

    使用 jQuery 验证给定此 HTML
  • Swift 3(省略不必要的单词)导致两个函数具有相同的名称

    在 Swift 3 0 中 由于 省略不必要的单词 规则而自动更改函数名称 导致 ObjC 类中的两个函数相同 void showLoader 和 void show deprecated msg User showLoader 问题是这些
  • Django Rest Framework 中仅限员工的权限

    我正在尝试创建仅供员工使用的 Django Rest Framework ModelViewSets 当我尝试使用标准 Django 装饰器时 staff member required我收到的错误让我相信装饰器无法与 Django Res
  • 暂时抑制PyQt事件?

    我正在填充 QTreeWidget 的一个分支 然后将分支父级上的扩展属性设置为 true itemExpanded 信号会触发响应 这不是我想要的 有没有临时的方法来抑制或吸收一段代码期间的信号 您可以使用 QObject blockSi
  • Swift 中的静态函数变量

    我试图弄清楚如何在 Swift 中声明一个仅在本地函数范围内的静态变量 在 C 语言中 这可能看起来像这样 int foo static int timesCalled 0 timesCalled return timesCalled 在
  • 将 fzf 多选输出格式化为 mpv

    以下作品 play file1 and then file 2 mpv file1 file 2 use fzf to select a file and play that file mpv fdfind path to Music fz
  • 失败 [INSTALL_FAILED_OLDER_SDK] Android-L

    我正在尝试使用 Android L 中的新 CardView 我更新了 SDK 管理器中的所有内容 但我不断收到以下错误 失败 INSTALL FAILED OLDER SDK 这是我的build gradle file apply plu
  • 更新支持库 23.2.1 后,RecyclerView 项目底部有很大的空白空间 [重复]

    这个问题在这里已经有答案了 我已将支持库更新到 23 2 1 之后 recyclerview 项目会出现很大的空白空间 虽然我使用的是 recyclerview 并且它的父视图高度为 WRAP CONTENT 我的应用程序一次从服务器获取
  • python 中子进程的替代方案

    我正在尝试编写一个脚本 该脚本必须对一些 bash 命令进行大量调用 解析和处理输出 最后给出一些输出 我正在使用 subprocess Popen 和 subprocess call 如果我理解正确 这些方法会生成一个 bah 进程 运行
  • 方法存根于 before(:all)

    require spec spec helper require bank describe Bank do context transfer do before all do customer1 Customer new 500 cust