Rspec:除非我特别要求,否则我想跳过测试

时间:2015-04-07 05:59:46

标签: ruby-on-rails ruby rspec

我有一个测试,我只想在我明确表示要运行它时运行。

说我有一个测试可以解决这个问题。这是一个测试,它会让用户完成购买某些东西所需的所有步骤,从用户注册到投标某些东西然后付款时为此,即使他们后来获得购买退款。

现在通常一次大规模的测试都是一个非常糟糕的主意。测试应该是小的和离散的。我全力以赴。我有那些测试。但我也认为一个全方位测试是一个好主意。特别是对于付款这样重要的事情。

我希望测试在整个数据库中都很慢......所以我真的不想经常运行它。 (只有当我特别要求时)

所以我想知道是否有办法在我特别要求时才进行测试。如果我输入" rspec'在我的终端然后这个大规模的测试不会运行。

2 个答案:

答案 0 :(得分:1)

听起来你想要隔离某些特征'要运行。 Cucumber和Capybara在封面下使用rspec就是这样。除非特别要求,否则将跳过使用此结构。从rspec核心,使用标记选项。

来自https://www.relishapp.com/rspec/rspec-core/v/2-4/docs/command-line/tag-option

的示例
    describe "group with tagged specs" do
      it "example I'm working now", :focus => true do; end
      it "special example", :type => 'special' do; end
      it "slow example", :skip => true do; end
      it "ordinary example", :speed => 'slow' do; end
      it "untagged example" do; end
    end

然后,测试:

    When I run "rspec . --tag mytag"

Features Specs

此外,使用黄瓜允许用于视图测试的特征标记。

答案 1 :(得分:1)

您可以使用ENV变量有条件地更改配置。例如,我在spec_helper.rb中使用以下内容默认禁用功能测试:

config.filter_run_excluding :type => 'feature' unless ENV['FEATURE']

然后,如果您想从控制台运行完整的测试套件,只需:

FEATURE=true rspec

您应该能够调整它以满足您的需求。如果您希望在那里运行功能规范,请记住在CI服务器上设置环境变量。