gpt4 book ai didi

unit-testing - 用于测试多个数据点的 rspec 设计模式

转载 作者:行者123 更新时间:2023-12-04 05:13:35 25 4
gpt4 key购买 nike

我经常发现在为一个方法编写测试时,我想在该方法上抛出一堆不同的输入,然后简单地检查输出是否符合我的预期。

作为一个简单的例子,假设我正在测试 my_square_function对数字进行平方并智能处理 nil .

以下代码似乎可以完成这项工作,但我想知道是否有我应该使用的最佳实践(例如使用 subjectcontext ):

describe "my_square_function" do
@tests = [{:input => 1, :result => 1},
{:input => -1, :result => 1},
{:input => 2, :result => 4},
{:input => nil, :result => nil}]
@tests.each do |test|
it "squares #{test[:input].inspect} and gets #{test[:result].inspect}" do
my_square_function(test[:input]).should == test[:result]
end
end
end

建议?

谢谢!

(相关: rspec refactoring?)

最佳答案

我会以一种更简单的方式将输入和预期结果关联到一个散列中,并迭代散列:

describe "my_square_function" do
@tests = {1 => 1,
-1 => 1,
2 => 4,
nil => nil}

@tests.each do |input, expected|
it "squares #{input} and gets #{expected}" do
my_square_function(input).should == expected
end
end
end

关于unit-testing - 用于测试多个数据点的 rspec 设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8199580/

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