require 'spec_helper'
describe IncomingMailsController do
include Devise::TestHelpers
it "should find the correct text in the sample" do
sample_text = '100s of these'
target_text = 'find me'
.... ALL Kinds of stuff to process (30+ lines)
thread.content.should == 'find me'
end
end
是否有一种方法可以使用rspec,允许我以某种方式在一个块中使用所有逻辑?然后创建100个“xxxxx”,并传递一个变量作为示例文本?
由于
答案 0 :(得分:4)
您可以将it
测试块放在循环中,并运行您想要的所有时间的集合(在下面的示例中,这些项目位于search_items
集合中)< / p>
require 'spec_helper'
describe IncomingMailsController do
include Devise::TestHelpers
search_items.each do |item|
it "should find the correct text (#{item}) in the sample" do
sample_text = '100s of these'
target_text = item
.... ALL Kinds of stuff to process (30+ lines)
thread.content.should == 'find me'
end
end
end
<强>更新强>
我在这篇文章中对另一个答案的评论中看到,您有一个包含100多个样本文件的目录,您可以使用Dir#glob获取文件名列表。然后,您可以在循环中使用它来生成it
测试用例。
更新2
Dir.glob('/path/to/files/*.txt').each do |file_name|
it "should find the correct text in the sample #{file_name}" do
file_content = File.open(file_name, "rb")
sample_text = '100s of these'
target_text = 'fine me'
.... ALL Kinds of stuff to process (30+ lines)
thread.content.should == 'find me'
end
end
您可能必须使用file_name的完整路径,但这应该可以帮到您。
答案 1 :(得分:1)
不确定这是否是您正在寻找的,但如何:
['xxxxxx', 'yyyyyyy', 'zzzzzzzz'].each do |thing|
it "finds #{thing} in the sample do
# and so on...
end
end
当然,您可能会选择除数组之外的其他内容来存储测试字符串,但这应该可以让您入门。