I have rspec test code like this
describe 'Utils' do
puts 1111
describe '#time_condition' do
puts 2221
it do
puts 'aaa'
end
puts 2223
end
end
my launch.json like this
{
"name": "RSpec - all",
"type": "Ruby",
"request": "launch",
"cwd": "${workspaceRoot}",
"program": "${workspaceRoot}/spec/*_rspec.rb",
"args": [
"--pattern",
"*_rspec.rb"
]
},
when I run test on vscode, I got
1111
2221
2223
when I run test by command, got
>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
As your can see, no 'aaa' output, means no 'it' was executed. So...How can I make 'it' to run on vscode?
by the way, my spec config files (generated by rspec --init)like
.rspec
--color
--require spec_helper
spec\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
VScode : 1.4.0
Ruby Extensions : 0.5.3
thanks
Finally got RSpec to run on VS Code, with breakpoints, on a Mac! No one at my startup knew how. See Microsoft's handy GitHub page on it.
My Gemfile
. Install 3 gems:
source 'https://rubygems.org'
gem 'rspec'
gem 'ruby-debug-ide'
gem 'debase'
My 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}"
]
},
]
}
For "program", use value of which rspec
. My path assumes I installed Ruby with RVM. Yours will be different.
For "pathToBundler", use value of which bundle
For "pathToRDebugIDE", use value of which rdebug-ide
For this line: "${workspaceRoot}/spec/**/*_spec.rb"
, yours may differ, depending how your spec files are organized, by folder.
To run RSpec:
In VS Code, go to Terminal -> New Terminal
in top menu. Be sure you're in root directory of your Ruby project.
Click left of any line number to set breakpoints, if you like.
Click Bug icon on left side of VS Code. Pick configuration from dropdown box in upper left:
Debug RSpec - open spec file
orRun RSpec - all
Then click green triangle (Start Debugging
) on upper left.
Even easier: install VS Code Extension Rails Test Runner. Then right-click on your spec file to either:
Run all tests in file
orRun tests starting from the current line
Here is version: 2.0.0
for Linux
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "rspec - all",
"type": "shell",
"command": "$(which bundle) exec rspec",
"group": "test",
},
{
"label": "rspec - one file",
"type": "shell",
"command": "$(which bundle) exec rspec ${file}",
"group": "test",
},
{
"label": "rspec - focus",
"type": "shell",
"command": "$(which bundle) exec rspec ${file} --focus",
"group": "test",
}
]
}
Now run Ctrl+Shift+p
and in menu: Tasks: ...
OK. I solved it! My fault is setting wrong value to program. Program must be rspec path.
...
{
"name": "RSpec - all",
"type": "Ruby",
"request": "launch",
"cwd": "${workspaceRoot}",
"program": "D:/Ruby/Ruby21/bin/rspec",
"args": [
"--pattern",
"${workspaceRoot}/spec/**/*_rspec.rb"
]
},
...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With