Kép: Karen Lau on Unsplash

Az alkalmazáskód tesztelését minden programozónak meg kell ismernie, függetlenül a választott nyelvtől vagy keretrendszertől. Az RSpec egy hihetetlen tesztcsomag és DSL (Domain-specifikus nyelv), amely Ruby-ra épül, és amely lehetővé teszi, hogy előre definiált módszerek segítségével könnyedén írjunk egységteszteket. A Ruby-ban történő kódírásba való bevezetésem szorosan összefonódott az RSpec vallásos futtatásának tapasztalatával, hogy teszteljem, amit írtam; és így amikor elkezdtem tanulni a Rails-t, az RSpec további használata természetesebb és zökkenőmentesebb átmenetet jelentett. A Rails alapértelmezés szerint a MiniTest tesztelési keretrendszert használja. Megbeszéljük, hogyan állíthatunk be egy új Rails projektet az RSpec használatához, majd megvizsgáljuk, hogyan használjuk a Capybarát a nézeteink tesztelésére.

Először is létrehozunk egy új Rails projektet a rails new NAME -T -B futtatásával, ahol a NAME a létrehozandó projekt könyvtárának elérési útja. A -T flag azt adja meg, hogy a Rails ne állítson be semmilyen tesztelési keretrendszert az új projektünkhöz, ami pontosan az, amit mi szeretnénk. A -B flag arra utasítja a Rails-t, hogy ezen a ponton hagyja ki a bundle install futtatását. Ezután úgy kell szerkesztenünk a Gemfile-unkat, hogy a következőket tartalmazza:

group :development, :test do
gem 'rspec-rails'
gem 'capybara'
end

Ezáltal mind az RSpec, mind a Capybara hozzáadódik a fejlesztői és tesztkörnyezetünkhöz. Ezen a ponton futtassuk a bundle, hogy telepítsük a gemeket és minden függőséget, amire a projektnek szüksége van. Szeretek ezen a ponton beugrani a rails console-ba, csak hogy ellenőrizzem, hogy minden működik-e, és ha nem – visszamegyek a Gemfile-omhoz, és kijavítom az esetleges problémákat.

Most, hogy a projektünk váza a helyén van, a következő lépés a tesztelési csomagunk felállítása. Egyszerűen futtassuk a rails generate rspec:install ezen a ponton, hogy létrehozzuk a spec könyvtárat és a szükséges fájlstruktúrát. Az utolsó lépés az, hogy megmondjuk a tesztjeinknek, hogy használják a Capybarát. A spec/rails_helper.rb-ben adjuk hozzá a következőket:

require 'capybara/rspec'

Ez volt a beállítás! Mielőtt továbbmennénk, rögzítsük a projektünkben elvégzett változtatásokat: git add . && git commit -m "initial commit". Merüljünk bele egy vezérlő létrehozásába és végezzünk némi tesztelést!

Photo by Max Nelson on Unsplash

Tesztelési céljainkhoz létrehozunk egy egyszerű űrlapot néhány bemenettel, majd megmondjuk a Capybarának, hogy töltsön ki néhány mintaadatot és küldje el az űrlapot. Nem fogunk aggódni semmilyen összetett modell létrehozása vagy az információk adatbázisba történő perzisztálása miatt. Mondjuk meg a Railsnek, hogy hozzon létre egy users kontrollert, és állítson be nekünk némi útválasztást:

rails generate controller Users new --no-helper --no-assets --no-view-specs

A --no-helper --no-assets megadásával azt mondjuk a Railsnek, hogy ne hozzon létre semmilyen eszközt vagy segédet a kontrollerünkhöz. A --no-view-specs opció arra utasítja a generátort, hogy ne hozzon létre teszteket a nézetekhez – később látni fogjuk, hogyan hozzuk létre a kívánt teszteket. A Rails létrehozott számunkra egy new útvonalat, amit a config/routes.rb:

Rails.application.routes.draw do
get 'users/new'
end

ban láthatunk, és a app/controllers/users_controller.rb:

class UsersController < ApplicationController
def new
end
end

banVégül a Rails létrehozott számunkra egy nézetet a app/views/users/new.html.erb-ben. Szerkesszük meg ezt a nézetet, hogy létrehozzunk egy egyszerű űrlapot:

<h1>User Login</h1>
<%= form_tag users_path do %>
<%= label_tag :name %>
<%= text_field_tag :name %>
<%= submit_tag "submit" %>
<% end %>

Meg kell tennünk néhány dolgot, hogy befejezzük a bekötést. A routes.rb-ben adjuk hozzá a következőket:

post 'users' => 'users#welcome'

Egy welcome műveletet is hozzá kell adnunk a users_controller.rb-hez:

def welcome
@user = params
render :welcome
end

Az utolsó lépés itt a views/users/welcome.html.erb létrehozása és néhány HTML és ERB beillesztése a felhasználó nevének megjelenítéséhez:

<h1><%= "Welcome, #{@user}!" %></h1>

Fú! Ha futtatjuk a rails server-et, és a böngészőnkben a localhost:3000/users/new-re megyünk, egy űrlapnak kell üdvözölnie minket, amely a nevünk megadására kér minket. Amikor beírjuk a nevünket, és megnyomjuk a submit gombot, át kell, hogy irányítson minket egy oldalra, amely szívélyesen üdvözöl minket. Ez mind szép és jó, de ha minden alkalommal, amikor új űrlapot adunk hozzá vagy új funkciót vezetünk be, a kódunkat így kell tesztelnünk, hogy meggyőződjünk róla, hogy működik-e, az hamarosan fárasztóvá válik. Szerencsére létezik egy eszköz, amely teszteli és automatizálja ezt a folyamatot helyettünk!

Ez az a pont, ahol a Capybara a képbe kerül. A Capybara egy olyan keretrendszer, amely lehetővé teszi számunkra, hogy teszteljük a nézeteinkben lévő kódot az űrlapok adatainak kitöltésével, az oldal tartalmának vizsgálatával és HTTP-kérések küldésével a böngészőnek. Állítsunk be egy specifikációt az újonnan létrehozott űrlapunk tesztelésére:

rails generate rspec:feature form

Ez a spec/features/form_spec.rb fájlt fogja generálni. Alapértelmezés szerint a Capybara a features nevű könyvtárban várja a specifikációkat. Szerkesszük meg ezt a fájlt, hogy hozzáadjunk egy új tesztet, amely kitölti a name szövegmező bemenetét és megnyomja a submit gombot:

require 'rails_helper'RSpec.feature "Forms", type: :feature do
it 'can enter a name and receive a greeting' do
visit 'users/new'
fill_in :name, with: "Capybara"
click_on 'submit'
expect(page).to have_content "Welcome, Capybara!"
end
end

Ez az! Sikeresen létrehoztuk az első tesztünket Railsben az RSpec és a Capybara segítségével. Ha lefuttatjuk a rspec --format documentation, látnunk kell, hogy a teszt átmegy. Kísérletezzünk bátran – milyen módokon lehet a tesztet sikertelenné tenni? Vannak más tesztek, amelyeket létrehozhatnánk ehhez a példához? Itt csak a felszínt karcoltuk – remélhetőleg ez elgondolkodtatja Önt arról, hogyan egyszerűsítheti és automatizálhatja a kódja tesztelésének folyamatát ezekkel az eszközökkel, és szoktassa rá magát a kódja gyakori tesztelésére.

Az ebben a bejegyzésben bemutatott kódot itt találja.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.