让我先说一下我是Ruby的新手。
我正在使用RubyMine中的Ruby做一个非常基础的教程,作为教程的一部分,我们在一个名为thing.rb的.rb Ruby文件中创建一个类。除了这个类之外,本教程还让我们在同一个.rb文件中放入一个Rspec测试。 .rb文件如下所示:
require 'rspec'
class Thing
def value
5
end
end
describe Thing do
it "should have a value of 6" do
Thing.new.value.should eq(7)
end
end
如果我右键单击项目文件夹并“运行项目中的所有规范”,我会收到错误和消息,包括“找到0个文件”和“清空测试套件”。如果我只运行rb脚本,我没有错误......脚本运行正常。
奇怪的是,如果我将第二个文件添加到名为thing_spec.rb的项目中,并且只将上面的测试放入其中:
require 'rspec'
require_relative 'thing'
describe Thing do
it "should have a value of 6" do
Thing.new.value.should eq(7)
end
end
然后右键单击该项目并选择“运行所有规范”,测试运行正常。注意我说测试(复数)...... RubyMine将在thing.rb中运行测试并在thing_spec.rb中运行测试。
为什么它不会识别thing.rb中的测试而不必添加名为thing_spec.rb的第二个文件?这对我来说毫无意义。无论如何我可以从thing.rb中运行rspec测试而不必创建第二个文件吗?
如果它很重要:我在Mac上工作,拥有RubyMine 4.5版,使用ruby interpreter 1.9.3,rspec 2.12.0。
答案 0 :(得分:2)
如果你进入Run > Edit Configurations...
然后选择All Specs in <Your Project>
,您会看到文件名掩码:**/*_spec.rb
这意味着当你告诉RubyMine运行“All Specs”时,它只运行与正则表达式匹配的文件。
现在,当您添加第二个文件并执行require_relative
加载另一个文件时,两个测试都会运行。