gpt4 book ai didi

ruby - 如何重新加载 ruby 类

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

在我们的许多类中,我们缓存昂贵的操作以提高性能。例如

def self.foo
@foo ||= get_foo
end

这在应用程序中效果很好,但是由于这些内存变量,测试 (RSpec) 失败了。当我们期望新值时,第一个测试的值将在后续测试中返回。

所以问题是:如何重新加载类?或者删除所有内存变量?

最佳答案

在示例组中添加一个after(或before) block 以删除实例变量(假设所讨论的对象是主题):

after do
subject.instance_variable_set(:@foo, nil)
end

或者解决问题。拥有一个内存类实例变量有点难闻,因为它永远不会改变。普通实例变量不会有这个问题,因为您会为每个测试创建一个新对象。

关于ruby - 如何重新加载 ruby 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11463060/

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