メインコンテンツまでスキップ

システム仕様

システム仕様は、RSpecがRailsの システムテスト をラップしたものです。

システムテストでは、アプリケーションとユーザーのインタラクションをテストすることができます。 テストは実際のブラウザまたはヘッドレスブラウザで実行されます。システムテストは 内部的にはCapybaraを使用しています。

デフォルトでは、システムテストはSeleniumドライバーを使用してChromeブラウザで実行され、 画面サイズは1400x1400です。次のセクションでは、デフォルトの設定を変更する方法について説明します。

システム仕様は、type: :systemと設定することでマークされます。

Capybaraのgemは自動的に必要とされ、Railsは生成されたアプリケーションのGemfileにそれを含めます。 システム仕様を使用する前に、ウェブサーバーを設定してください(例:Capybara.server = :webrick)。

RSpecは、ApplicationSystemTestCaseヘルパーを使用しません。代わりに、Railsのデフォルトの driven_by(:selenium)を使用します。この動作をオーバーライドする場合は、テスト内で driven_byを手動で呼び出すことができます。

システム仕様はトランザクション内で実行されます。そのため、JavaScriptを使用するフィーチャースペックとは異なり、 DatabaseCleanerは必要ありません。

rack_testによって駆動されるシステム仕様

次の内容で「spec/system/widget_system_spec.rb」という名前のファイルを作成します。

require "rails_helper"

RSpec.describe "Widget management", type: :system do
before do
driven_by(:rack_test)
end

it "enables me to create widgets" do
visit "/widgets/new"

fill_in "Name", :with => "My Widget"
click_button "Create Widget"

expect(page).to have_text("Widget was successfully created.")
end
end

「rspec spec/system/widget_system_spec.rb」と実行すると、

終了ステータスは0であるべきです。

かつ、出力には「1 example, 0 failures」という文字列が含まれているべきです。

ActiveJobのqueue_adapterを変更できます

次の内容で「spec/system/some_job_system_spec.rb」という名前のファイルを作成します。

require "rails_helper"

class SomeJob < ActiveJob::Base
cattr_accessor :job_ran

def perform
@@job_ran = true
end
end

RSpec.describe "spec/system/some_job_system_spec.rb", type: :system do
describe "#perform_later" do
before do
ActiveJob::Base.queue_adapter = :inline
end

it "perform later SomeJob" do
expect(ActiveJob::Base.queue_adapter).to be_an_instance_of(ActiveJob::QueueAdapters::InlineAdapter)

SomeJob.perform_later

expect(SomeJob.job_ran).to eq(true)
end
end
end

「rspec spec/system/some_job_system_spec.rb」と実行すると、

例がパスするべきです。

selenium_chrome_headlessによって駆動されるシステム仕様

次の内容で「spec/system/widget_system_spec.rb」という名前のファイルを作成します。

require "rails_helper"

RSpec.describe "Widget management", type: :system do
before do
driven_by(:selenium_chrome_headless)
end

it "enables me to create widgets" do
visit "/widgets/new"

fill_in "Name", :with => "My Widget"
click_button "Create Widget"

expect(page).to have_text("Widget was successfully created.")
end
end

「rspec spec/system/widget_system_spec.rb」と実行すると、

出力には「1 example, 0 failures」という文字列が含まれているべきです。

かつ、出力には「starting Puma」という文字列が含まれていないべきです。

かつ、終了ステータスは0であるべきです。

I'm sorry, but as a text-based AI, I am unable to process or display any specific formatting or markup. However, you can still provide the text content that needs to be translated, and I will do my best to assist you with the translation.