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

Mat*_*hic 7 ruby testing unit-testing rspec

假设我有Car和Mechanic课程.汽车有"跑"的方法.机修工出于某种原因需要汽车.然后我写了RSpec规范.在机械师中,我定义了一个像这样的假clas:

class Car; end
Run Code Online (Sandbox Code Playgroud)

然后将技工使用的方法存根.如果我单独进行测试,一切正常.但是当我同时运行两个测试(rspec spec/directory /)时,我的Mechanic规范使用了真正的Car类.

所以.我想这是因为ruby类是"开放的"而且我已经为Car specs加载了一次类.但是有更好的方法吗?这种情况的最佳做法是什么?这是否意味着我的代码需要一些改进,因为它可能紧密耦合?

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

小智 2

由于 Ruby 类是开放的,所以这个假类不会工作。

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

希望这对您有帮助!