gpt4 book ai didi

ruby - 如何 stub 在 RSpec 中接受多个参数的基类方法?

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

我想测试 ChildClass 调用 something_interesting 的实例,同时省略对 BaseClass.my_method 的调用

class BaseClass
def my_method *args, &block
end
end

class ChildClass < BaseClass
def my_method first_arg, second_arg
something_interesting
super first_arg, second_arg
end
end

如果我这样写我的测试:

subject = ChildClass.new
subject.should_receive :something_interesting
BaseClass.any_instance.stub :my_method
subject.my_method

我得到错误:

ArgumentError: wrong number of arguments (3 for 2)

知道为什么会这样吗?如何正确地 stub ?

最佳答案

我不得不尝试一下。这可能很愚蠢,但我认为这是一种相当明确的方式(无需 stub ):

require 'rspec'

class BaseClass
def my_method *args, &block
raise 'hell'
end
end

class ChildClass < BaseClass
def my_method first_arg, second_arg
something_interesting
super first_arg, second_arg
end

def something_interesting
end
end


describe ChildClass do
it "should work" do
class BaseClass
def my_method *args, &block
end
end
subject = ChildClass.new
subject.should_receive :something_interesting
subject.my_method 'two', 'args'
end
end

猴子补丁可能有点邪恶,但在测试时是一个很好的工具。

关于ruby - 如何 stub 在 RSpec 中接受多个参数的基类方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11499836/

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