Master BDD dengan Ruby on Rails 5: RSpec dan Capybara
Daftar Isi
1. Pengantar Behavior Driven Development (BDD)
Behavior Driven Development (BDD) adalah pendekatan pengembangan perangkat lunak yang berfokus pada kolaborasi antara pengembang, tester, dan pemilik produk untuk menghasilkan perangkat lunak yang sesuai dengan kebutuhan bisnis. BDD menggunakan bahasa yang mudah dimengerti oleh semua pihak, biasanya dalam format Given-When-Then .
Dengan BDD, kita menulis spesifikasi yang dapat dijalankan (executable specifications) yang sekaligus berfungsi sebagai dokumentasi dan pengujian otomatis.

Pada Ruby on Rails, dua library populer untuk BDD adalah RSpec untuk menulis test dan Capybara untuk simulasi interaksi pengguna pada aplikasi web.
2. Setup Ruby on Rails 5 dengan RSpec dan Capybara
Untuk memulai BDD di Rails 5, kita perlu menambahkan beberapa gem ke dalam proyek. Berikut langkah-langkah setup:
# Tambahkan ke Gemfile
di grup development dan test:
group :development, :test do
gem 'rspec-rails', '~> 3.8'
gem 'capybara', '~> 3.35'
gem 'selenium-webdriver'
gem 'webdrivers'
end
# Lalu jalankan perintah di terminal:
bundle install
rails generate rspec:install
Perintah
rails generate rspec:install
akan membuat folder
spec/
dan file konfigurasi RSpec.

3. Struktur Proyek dan Direktori Testing
Setelah setup, struktur direktori testing di Rails dengan RSpec biasanya seperti ini:
-
spec/models/
- untuk testing model -
spec/controllers/
- untuk testing controller -
spec/features/
- untuk testing fitur dan integrasi dengan Capybara -
spec/support/
- untuk helper dan konfigurasi tambahan

Kita akan fokus pada
spec/features/
untuk testing end-to-end menggunakan Capybara dan
spec/models/
untuk unit test model.
5. Testing Feature dengan Capybara
Capybara memungkinkan kita menulis test yang mensimulasikan interaksi pengguna di browser. Contoh test fitur membuat artikel baru:
# spec/features/create_article_spec.rb require 'rails_helper' RSpec.feature "CreateArticle", type: :feature do scenario "Pengguna membuat artikel baru dengan sukses" do visit new_article_path fill_in 'Title', with: 'Artikel Baru' fill_in 'Content', with: 'Isi lengkap artikel baru' click_button 'Create Article' expect(page).to have_text('Artikel berhasil dibuat') expect(page).to have_text('Artikel Baru') end scenario "Pengguna gagal membuat artikel tanpa judul" do visit new_article_path fill_in 'Title', with: '' fill_in 'Content', with: 'Isi lengkap artikel' click_button 'Create Article' expect(page).to have_text("Title can't be blank") end end
Jalankan test fitur dengan:
bundle exec rspec spec/features/create_article_spec.rb

Capybara juga mendukung driver seperti Selenium untuk testing JavaScript dan interaksi kompleks.
6. Best Practices dalam BDD dengan Rails
- Tulis test yang mudah dibaca dan dimengerti: Gunakan bahasa alami dan struktur Given-When-Then untuk menjelaskan skenario.
- Jaga test tetap cepat dan terisolasi: Gunakan mocking dan stubbing untuk menghindari ketergantungan pada layanan eksternal.
- Gunakan Factory Bot untuk data test: Membantu membuat data dummy yang konsisten dan mudah di-maintain.
- Jalankan test secara rutin: Integrasikan dengan CI/CD untuk memastikan kualitas kode tetap terjaga.
- Dokumentasikan test dan fitur: Test yang baik juga berfungsi sebagai dokumentasi hidup aplikasi.

7. Sumber Belajar dan Channel Pembelajaran
Berikut beberapa sumber dan channel yang sangat membantu untuk mendalami BDD dengan Ruby on Rails, RSpec, dan Capybara:
- Dokumentasi Resmi RSpec - Referensi lengkap untuk menulis test dengan RSpec.
- Dokumentasi Capybara - Panduan penggunaan Capybara untuk testing fitur.
- Ruby on Rails Tutorial oleh Michael Hartl - Tutorial lengkap Rails dengan testing.
- GoRails (YouTube Channel) - Video tutorial Rails dan testing.
- Drifting Ruby (YouTube Channel) - Video pembelajaran Ruby dan Rails.
- Upcase by thoughtbot - Kursus online berkualitas untuk Rails dan testing.
