gpt4 book ai didi

ruby - 在 Rspec 中测试非静态方法?

转载 作者:数据小太阳 更新时间:2023-10-29 08:41:14 27 4
gpt4 key购买 nike

在使用 rspec 进行测试时,是否可以检查将哪些参数传递给非静态方法?

如果我想测试 A 类,在 A 类中我调用 B 类,B 已经被测试过。我唯一想测试的是 B 的传入参数。

class A
def method
number = 10
b = B.new
b.calling(number)
end
end

class B
def calling(argument)
# This code in this class is already testet
end
end

如何测试 b.calling 的传入参数?

到目前为止,我已经试过了,但没有成功。

it "should work" do
b = mock(B)
b.should_receive(:calling).at_least(1).times
A.new.method
end

它总是失败,因为 b 从未被调用过。

最佳答案

你规范中的 b 不是 b A 正在实例化(当你调用 new 时它返回 B 的一个真实实例,因为你还没有 stub ),试试这个:

it "should work" do
b = mock(B)
B.should_receive(:new).and_return(b)
b.should_receive(:calling).at_least(1).times
A.new.method
end

关于ruby - 在 Rspec 中测试非静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4908971/

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