我有以下文件:

/spec/controllers/groups_controller_spec.rb

我在终端中使用什么命令来运行该规范,在什么目录中运行该命令?

我的宝石文件:

# Test ENVIRONMENT GEMS
group :development, :test do
    gem "autotest"
    gem "rspec-rails", "~> 2.4"
    gem "cucumber-rails", ">=0.3.2"
    gem "webrat", ">=0.7.2"
    gem 'factory_girl_rails'
    gem 'email_spec'
end

规范文件:

require 'spec_helper'

describe GroupsController do
  include Devise::TestHelpers

  describe "GET yourgroups" do
    it "should be successful and return 3 items" do

      Rails.logger.info 'HAIL MARRY'

      get :yourgroups, :format => :json
      response.should be_success
      body = JSON.parse(response.body)
      body.should have(3).items # @user1 has 3 permissions to 3 groups
    end
  end
end

当前回答

对于模型,它将只在第5行上运行case

bundle exec rspec spec/models/user_spec.rb:5

对于控制器:它将只在第5行上运行case

bundle exec rspec spec/controllers/users_controller_spec.rb:5

对于信号模型或控制器,从上面去掉行号

在所有模型上运行case

bundle exec rspec spec/models

在所有控制器上运行case

bundle exec rspec spec/controllers

运行所有案例

 bundle exec rspec 

其他回答

从rspec 2开始,你可以使用以下代码:

# in spec/spec_helper.rb
RSpec.configure do |config|
  config.filter_run :focus => true
  config.run_all_when_everything_filtered = true
end

# in spec/any_spec.rb
describe "something" do
  it "does something", :focus => true do
    # ....
  end
end

你可以这样做:

 rspec/spec/features/controller/spec_file_name.rb
 rspec/spec/features/controller_name.rb         #run all the specs in this controller

我使用这个守护宝石自动运行我的测试。它在对测试文件进行创建或更新操作后执行测试。

https://github.com/guard/guard-test

或 通常可以使用以下命令运行

rspec spec / controllers / groups_controller_spec rb。

从项目的根目录运行命令:

# run all specs in the project's spec folder
bundle exec rspec 

# run specs nested under a directory, like controllers
bundle exec rspec spec/controllers

# run a single test file
bundle exec rspec spec/controllers/groups_controller_spec.rb

# run a test or subset of tests within a file
# e.g., if the 'it', 'describe', or 'context' block you wish to test
# starts at line 45, run:
bundle exec rspec spec/controllers/groups_controller_spec.rb:45

此外,您可以使用——example (-e)选项来运行特定的测试,这些测试部分或完全匹配给定测试路径的'it'、'describe'或'context'块中的文本标签:

# run groups controller specs in blocks with a label containing 'spaghetti flag is false'
bundle exec rspec spec/controllers/groups_controller_spec.rb -e 'spaghetti flag is false'

# Less granularly, you can run specs for blocks containing a substring of text 
# that matches one or more block labels, like 'spaghetti' or 'paghett'
bundle exec rspec spec/controllers/groups_controller_spec.rb -e spaghetti

这将运行块内嵌套的所有测试,标签与示例选项接收到的字符串参数匹配。

When using the example option, I recommend also appending --format documentation (shorthand: -f documentation) to your bundle command (e.g., bundle exec rspec spec/some_file.rb -e spaghetti -f documentation). Documentation-formatting replaces the normal ./F output with an easy-to-read pretty printed breakdown showing the nested block labels for the examples you're running and outputs the printed label for each example (it block) in green or red to denote whether it passed or failed. This provides better confirmation that your example argument matches the specs you intended to run, and it gives live visibility to which examples are passing/failing during longer test runs where the example argument matches many block labels and/or matched blocks contain many nested examples.

附加阅读(文档链接)

例子的选择 格式选项

对于单个示例的规格文件,您需要在最后添加行号,例如

rspec spec/controllers/api/v1/card_list_controller_spec.rb:35

对于单个文件,您可以指定您的文件路径,例如

rspec spec/controllers/api/v1/card_list_controller_spec.rb

对于spec文件夹中的整个Rspec示例,您可以尝试使用此命令

bundle exec rspec spec