在 VS Code 上运行 rspec

Clx*_*lxy 4 ruby visual-studio-code

我有这样的 rspec 测试代码

describe 'Utils' do

  puts 1111
  describe '#time_condition' do
    puts 2221
    it do
      puts 'aaa'
    end
    puts 2223
  end
end
Run Code Online (Sandbox Code Playgroud)

我的launch.json像这样

{
  "name": "RSpec - all",
  "type": "Ruby",
  "request": "launch",
  "cwd": "${workspaceRoot}",
  "program": "${workspaceRoot}/spec/*_rspec.rb",
  "args": [
    "--pattern",
    "*_rspec.rb"
  ]
},
Run Code Online (Sandbox Code Playgroud)

当我在 vscode 上运行测试时,我得到了

1111
2221
2223
Run Code Online (Sandbox Code Playgroud)

当我通过命令运行测试时,得到

>rspec spec --pattern *_rspec.rb
1111
2221
2223
aaa
.

Finished in 0.003 seconds (files took 0.23602 seconds to load)
1 example, 0 failures
Run Code Online (Sandbox Code Playgroud)

如您所见,没有 'aaa' 输出,意味着没有执行 'it'。那么......我怎样才能让“它”在 vscode 上运行?

顺便说一下,我的规范配置文件(由 rspec --init 生成)就像

.rspec

--color
--require spec_helper
Run Code Online (Sandbox Code Playgroud)

规格\spec_helper.rb

RSpec.configure do |config|
  config.expect_with :rspec do |expectations|
    expectations.include_chain_clauses_in_custom_matcher_descriptions = true
  end

  config.mock_with :rspec do |mocks|
    mocks.verify_partial_doubles = true
  end

  config.profile_examples = 10

  config.order = :random

  Kernel.srand config.seed
end
Run Code Online (Sandbox Code Playgroud)

VS代码:1.4.0

Ruby 扩展:0.5.3

谢谢

Ray*_*Gan 6

终于让 RSpec 在 VS Code 上运行,带断点,在 Mac 上!我的初创公司没有人知道怎么做。请参阅 Microsoft 上方便的GitHub 页面

我的Gemfile。安装 3 个宝石:

source 'https://rubygems.org'

gem 'rspec'
gem 'ruby-debug-ide'
gem 'debase'
Run Code Online (Sandbox Code Playgroud)

我的launch.json

{
  "configurations": [
    {
      "name": "Run RSpec - all",
      "type": "Ruby",
      "request": "launch",
      "cwd": "${workspaceRoot}",
      "program": "/Users/[your name]/.rvm/gems/ruby-2.6.3/bin/rspec",
      "args": [
        "--pattern",
        "${workspaceRoot}/spec/**/*_spec.rb"
      ]
    },
    {
      "name": "Debug RSpec - open spec file",
      "type": "Ruby",
      "request": "launch",
      "cwd": "${workspaceRoot}",
      "useBundler": true,
      "pathToBundler": "/Users/[your name]/.rvm/gems/ruby-2.6.3/bin/bundle",
      "pathToRDebugIDE": "/Users/[your name]/.rvm/gems/ruby-2.6.3/bin/rdebug-ide",
      "debuggerPort": "1235",
      "program": "/Users/[your name]/.rvm/gems/ruby-2.6.3/bin/rspec",
      "args": [
        "${file}"
      ]
    },
  ]
}
Run Code Online (Sandbox Code Playgroud)

对于“程序”,使用值which rspec。我的路径假设我用 RVM 安装了 Ruby。你的会不一样。

对于“pathToBundler”,使用值 which bundle

对于“pathToRDebugIDE”,使用值 which rdebug-ide

对于这一行:"${workspaceRoot}/spec/**/*_spec.rb",您的可能会有所不同,具体取决于您的规范文件的组织方式,按文件夹。

运行 RSpec:

在 VS Code 中,转到Terminal -> New Terminal顶部菜单。确保您位于 Ruby 项目的根目录中。

如果您愿意,请单击任意行号的左侧以设置断点

单击 VS Code 左侧的 Bug 图标。从左上角的下拉框中选择配置:

  1. Debug RSpec - open spec file 或者
  2. Run RSpec - all

然后单击Start Debugging左上角的绿色三角形 ( )。

更简单:安装 VS Code Extension Rails Test Runner。然后右键单击您的规范文件以执行以下任一操作:

  1. Run all tests in file 或者
  2. Run tests starting from the current line


Clx*_*lxy 2

好的。我解决了!我的错误是为程序设置了错误的值。程序必须是 rspec 路径。

...
{
  "name": "RSpec - all",
  "type": "Ruby",
  "request": "launch",
  "cwd": "${workspaceRoot}",
  "program": "D:/Ruby/Ruby21/bin/rspec",
  "args": [
    "--pattern",
    "${workspaceRoot}/spec/**/*_rspec.rb"
  ]
},
...
Run Code Online (Sandbox Code Playgroud)