gpt4 book ai didi

ruby - 在 rspec 中 stub require 语句?

转载 作者:数据小太阳 更新时间:2023-10-29 07:55:46 26 4
gpt4 key购买 nike

我必须维护一个 Ruby 脚本,它需要一些我在本地没有的库,这些库在我的环境中不起作用。不过,我想在此脚本中指定一些方法,以便我可以轻松更改它们。

是否有一个选项可以在我要测试的脚本中存入一些 require 语句,以便它可以由 rspec 加载并且规范可以在我的环境中执行?

示例(old_script.rb):

require "incompatible_lib"
class Script
def some_other_stuff
...
end
def add(a,b)
a+b
end
end

如何在不拆分“old_Script.rb”文件且不提供我没有的 incompatible_lib 的情况下编写测试来检查 add 函数?

最佳答案

您可以这样做,而不是从 Kernel 中“继承”require,而是这样做:

  1. 在不在您的 $LOAD_PATH 中的某处创建一个虚拟 incompatible_lib.rb 文件。也就是说,如果这是一个 Ruby 应用程序(不是 Rails),请不要将它放在 lib/spec/ 中。
  2. 您可以通过多种方式完成此操作,但我会告诉您一种方法:在您测试 Script 的规范文件中,修改 $LOAD_PATH 以包含您的 dummy 的父目录 incompatible_lib.rb
  3. 排序非常重要 -- 接下来您将包括 script.rb(定义 Script 的文件)。

这将帮助您解决问题并允许您测试 add 方法。

一旦您成功测试了 Script,我强烈建议您重构它,这样您就不必使用这种技巧,恕我直言,这是一种 hack。

关于ruby - 在 rspec 中 stub require 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27231575/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com