我使用 guard-rspec在我的文件更改时自动运行必要的 rspec 测试,我喜欢它的工作方式。但是,当我调试包含多个测试的文件时,有时我只想重新运行单个测试。例如,从命令行使用 rspec:
rspec spec/requests/my_favorite_spec.rb:100
这将仅运行 my_favorite_spec.rb
中第 100 行的单个规范。
我尝试将以上内容输入守卫控制台,但它只是运行了所有测试,就好像我刚刚按下回车键一样。守卫控制台中是否有另一种语法来运行单个规范?
最佳答案
您必须参数化您的 spec/spec_helper.rb
文件以接受 :focus => true
语句。
RSpec.configure do |config|
config.filter_run :focus => true
end
然后就可以使用了
it 'does something', :focus => true do
//your spec
end
或
describe "something", :focus => true do
before do
sign in
visit page
end
it { does something }
it { does something else }
end
如果您打算采用这种方法,您可能还想确保在任何地方都没有 :focus => true
的情况下运行所有规范,使用 documented approach :
RSpec.configure do |config|
config.run_all_when_everything_filtered = true
end
过滤器可以做很多事情;你可能想看看这个页面:https://relishapp.com/rspec/rspec-core/v/3-0/docs/filtering
关于ruby-on-rails - 如何在 guard for rspec 中运行单个测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21127370/