私は guard-rspec を使用して、ファイルが変更されたときに必要なrspecテストを自動的に実行します。ただし、複数のテストでファイルをデバッグしているとき、個別のテストを再実行したい場合があります。たとえば、コマンドラインからrspecを使用すると、次のようになります。
rspec spec/requests/my_favorite_spec.rb:100
これは、my_favorite_spec.rb
の100行目の単一の仕様のみを実行します。
上記をガードコンソールに入力してみましたが、Enterキーを押したときのようにすべてのテストが実行されました。単一の仕様を実行するために、ガードコンソールに別の構文はありますか?
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
がどこにもない場合は、すべての仕様が実行されることを確認することもできます。
RSpec.configure do |config|
config.run_all_when_everything_filtered = true
end
フィルターを使用すると、多くのことができます。あなたはこのページを見てみたいかもしれません: https://relishapp.com/rspec/rspec-core/v/3-0/docs/filtering
ここで説明するように、Guardfileでfailed_mode: :focus
を使用できます。 https://github.com/guard/guard-rspec#list-of-available-options
実行するスペックに「focus:true」オプションを追加できると思います。
it 'does something', focus: true do
//your spec
end
次に、ファイルを保存し、ガードはそのフォーカスされたテストのみを実行します
終了したら、「focus:true」を削除するだけです