Photo by Max Nelson on UnsplashTesztelé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.