gpt4 book ai didi

ruby - 你怎么临时 "class_eval"作测试?

转载 作者:太空宇宙 更新时间:2023-11-03 18:29:42 25 4
gpt4 key购买 nike

是否可以临时将某些方法应用到类中进行测试?我希望能够根据多种应用方式运行规范。虽然我可以制作一堆具有不同设置的装置,但我发现在测试中仅 class_eval 模型更容易。例如:

describe "some context"
before do
Page.class_eval do
my_applying_method :some => :option
end
end

it "should..."
end

然后在另一个上下文 block 中:

describe "another context without the gem applied"
before do
Page.class_eval do
# nothing here since I want to page to be as is
end
end

it "should do something else..."
end

但是最后一个上下文 block 的问题是它有一个修改过的类(在上面的上下文 block 中修改)。 是否可以在 class_eval 之后重置一个类?怎么办?

谢谢!

最佳答案

我希望有更好的方法来做到这一点,但你可以使用它(它在 Foo = Foo_old 行有警告):

module Bar
def baz
end
end

class Foo
end

puts Foo.method_defined? :baz #=> false
Foo_old = Foo.dup # create a copy of our class

Foo.class_eval do
include Bar
end

puts Foo.method_defined? :baz #=> true
Foo = Foo_old
puts Foo.method_defined? :baz #=> false

关于ruby - 你怎么临时 "class_eval"作测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6086134/

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