ruby - RSpec 规范伪造类常量的最佳实践或解决方法

标签 ruby unit-testing testing rspec

假设我有 Car 和 Mechanic 类(class)。汽车有“运行”方法。 Mechanic 出于某种原因需要 Car。然后我编写 RSpec 规范。在 mechanic 中,我定义了一个这样的假类:

class Car; end

然后将 mechanic 在其上使用的方法 stub 。如果我单独运行测试,一切正常。但是当我一起运行两个测试时(rspec spec/directory/),我的 Mechanic specs 使用真实的 Car 类。

所以。我想这是因为 ruby​​ 类是“开放的”,我已经为汽车规范加载了一次类。但是有更好的方法吗?这种情况的最佳做法是什么?这是否意味着我的代码需要一些改进,因为它可能是紧密耦合的?

我在github做了一个快速演示:https://github.com/depy/RspecTest

最佳答案

由于 Ruby 类是开放的,所以这个假类将无法工作。

您可以使用的一种方法是使用 let以您想要的方式初始化对象,如果需要,可以在 before block 上处理关系。在 before block 中也欢迎 stub 。 =p

希望对你有帮助!

关于ruby - RSpec 规范伪造类常量的最佳实践或解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13611400/

相关文章:

javascript - 如何使用 Jest 解决模拟函数内的外部 promise ?

java - Lambda 表达式条件的代码覆盖率单元测试

java - SonarQube 不显示单元测试结果

将 Ruby 转换为 C 语言,有人愿意看一下吗?

ruby - 无需循环即可将列表解析为多维数组

unit-testing - 在单元测试中模拟 azure blob 存储

unit-testing - 测试代码的理想时间范围是多少

c++ - 在 C++ 中设置模拟接口(interface)

ruby - 如何查看上传失败的具体 Recipe ?

ruby-on-rails - 如何使用 Nokogiri 返回一个 JSON 对象