gpt4 book ai didi

unit-testing - RSpec 场景大纲 : Multiple Test Cases

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

使用 RSpec 测试一堆不同的测试用例的最佳方法是什么?

例如,给定 string-additions.rb :

require 'rspec'

class String
if method_defined? :reverse_words
raise "String#reverse_words is already defined"
end
def reverse_words
split(' ').reverse!.join(' ')
end
end

describe String do
describe "#reverse_words" do
specify { "hello".reverse_words.should eq("hello") }
specify { "hello world".reverse_words.should eq("world hello") }
specify { "bob & pop run".reverse_words.should eq("run pop & bob") }
end
end

当我运行时 rspec string-additions.rb --color --format doc ,我得到:
String
#reverse_words
should == hello
should == world hello
should == run pop & bob

但是,我想获得合理的输出,如下所示:
String
#reverse_words
"hello" => "hello"
"hello world" => "world hello"
"bob & pop run" => "run pop & bob"

而且,我想 DRY我的规范有点高。 RSpec 是否提供了一个模板来完成这种多案例测试?类似于 Cucumber scenario outlines ?

注意:这个问题类似于 Is there an equivalent in RSpec to Cucumber's “Scenarios” or am I using RSpec the wrong way?但提供了一个应使用 RSpec 而不是 Cucumber 进行测试的示例。

最佳答案

阅读后Elisabeth Hendrickson's Adventures with Auto-Generated Tests and RSpec ,我想出了这个解决方案:

describe String do
describe "#reverse_words" do
strings = {
"hello" => "hello",
"hello world" => "world hello",
"bob & pop run" => "run pop & bob"
}

strings.each do |k, v|
specify "\"#{k}\" => \"#{v}\"" do
k.reverse_words.should eq(v)
end
end
end
end

这给出了我想要的输出,但如果 R​​Spec 有一个模板来使事情变得更加干燥,那就更好了。

关于unit-testing - RSpec 场景大纲 : Multiple Test Cases,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5524056/

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