0

让我先说我是 Ruby 的新手。

我正在 RubyMine 中做一个关于 Ruby 的非常基础的教程,作为教程的一部分,我们在一个名为 thing.rb 的 .rb Ruby 文件中创建了一个类。除了课程之外,本教程还让我们将 Rspec 测试放在同一个 .rb 文件中。.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​​ 解释器 1.9.3,rspec 2.12.0。

4

1 回答 1

2

如果你进去Run > Edit Configurations...

并选择All Specs in <Your Project>你会看到文件名掩码:**/*_spec.rb

这意味着当您告诉 RubyMine 运行“所有规格”时,它只运行与正则表达式匹配的文件。

现在,当您添加第二个文件并加载另一个文件时require_relative,两个测试都会运行。

于 2013-01-05T18:05:13.063 回答