Mae RSpec yn un o'r offer prawf mwyaf poblogaidd ar gyfer Ruby, gan ei fod yn cynnig dull syml a chydlynol ar gyfer ysgrifennu profion. Mae'n caniatáu i ddatblygwyr greu profion sy'n hawdd eu darllen a'u cynnal, gan sicrhau bod eu cod yn gweithio fel y dymunir. Yn y tiwtorial hwn, byddwn yn archwilio'r sylfeini o RSpec, gan gynnwys sut i'w osod, ysgrifennu profion sylfaenol, a rhai technegau mwy datblygedig. Gadewch i ni ddechrau!
Mae RSpec yn fframwaith prawf ar gyfer Ruby sy'n canolbwyntio ar ddiffinio ymddygiad. Mae'n caniatáu i chi ysgrifennu profion yn ffordd sy'n debyg i'r ffordd y byddai'n rhaid i chi ddisgrifio'r ymddygiad a ddisgwylir gan eich cod. Mae RSpec yn defnyddio'r egwyddor o "prawf yn seiliedig ar ymddygiad" (BDD), sy'n golygu ei fod yn canolbwyntio ar yr hyn y mae'r cod yn ei wneud yn hytrach na'r hyn y mae'n ei wneud.
Mae gosod RSpec yn syml. Gallwch ei wneud trwy ddefnyddio Bundler neu drwy ei osod yn uniongyrchol. Dyma'r camau i'w dilyn:
# Cam 1: Creu ffeil Gemfile touch Gemfile # Cam 2: Ychwanegu RSpec i'r Gemfile echo "gem 'rspec'" >> Gemfile # Cam 3: Gosod y gemau bundle install
Ar ôl i chi osod RSpec, gallwch ei gychwyn yn eich prosiect trwy redeg y gorchymyn canlynol:
rspec --init
Bydd hyn yn creu cyfeiriadur 'spec' yn eich prosiect, lle gallwch chi gadw eich profion.
Mae RSpec yn caniatáu i chi ysgrifennu profion yn ffordd sy'n hawdd ei deall. Dyma'r strwythur sylfaenol ar gyfer ysgrifennu prawf:
RSpec.describe 'Enw'r dosbarth neu'r modiwl' do it 'dylai wneud rhywbeth' do # Cod prawf yma end end
Dyma enghraifft syml o sut i ysgrifennu prawf ar gyfer dosbarth sy'n adio dwy rif:
class Calculator def add(a, b) a + b end end RSpec.describe Calculator do it 'dylai adio dwy rif' do calculator = Calculator.new result = calculator.add(2, 3) expect(result).to eq(5) end end
Yn yr enghraifft hon, rydym yn creu dosbarth Calculator gyda dull add. Yna, rydym yn ysgrifennu prawf sy'n gwirio a yw'r dull add yn gweithio'n gywir.
Mae RSpec yn cynnig rhai dulliau defnyddiol i wneud eich profion yn fwy effeithlon. Mae 'let' a 'before' yn ddau ohonynt:
RSpec.describe Calculator do let(:calculator) { Calculator.new } before do # Gallwch wneud unrhyw gosodiadau cychwynnol yma end it 'dylai adio dwy rif' do result = calculator.add(2, 3) expect(result).to eq(5) end end
Mae'n bwysig hefyd ysgrifennu profion negyddol i wirio a yw eich cod yn ymateb yn iawn i ddata annisgwyl. Dyma sut i wneud hynny:
RSpec.describe Calculator do it 'dylai dychwelyd error pan fydd yn ceisio adio gair' do calculator = Calculator.new expect { calculator.add(2, 'tri') }.to raise_error(ArgumentError) end end
Yn yr enghraifft hon, rydym yn gwirio a yw'r dull add yn codi gorchymyn error pan fyddwn yn ceisio adio rhif a gair.
Gallwch ddefnyddio 'context' i grwpio profion sy'n gysylltiedig â'i gilydd. Mae hyn yn gwneud eich profion yn haws i'w darllen a'u cynnal:
RSpec.describe Calculator do context 'pan fydd yn adio' do it 'dylai adio dwy rif' do calculator = Calculator.new result = calculator.add(2, 3) expect(result).to eq(5) end it 'dylai dychwelyd error pan fydd yn ceisio adio gair' do calculator = Calculator.new expect { calculator.add(2, 'tri') }.to raise_error(ArgumentError) end end end
Ar ôl i chi ysgrifennu eich profion, gallwch eu rhedeg trwy ddefnyddio'r gorchymyn canlynol:
rspec
Bydd hyn yn rhedeg pob prawf yn y cyfeiriadur 'spec' a bydd yn rhoi adroddiad i chi am y canlyniadau.
Mae RSpec hefyd yn cynnig 'mocks' a 'stubs' i helpu i brofi cod sy'n dibynnu ar ddibyniaethau allanol. Mae hyn yn caniatáu i chi greu amgylchedd prawf mwy rheoledig:
RSpec.describe 'Dibyniaethau' do it 'dylai alw'r dull cywir' do service = double('Service') expect(service).to receive(:perform) service.perform end end
Yn yr enghraifft hon, rydym yn creu 'double' sy'n cynrychioli gwasanaeth, ac rydym yn gwirio a yw'r dull perform yn cael ei alw.
Mae RSpec yn fframwaith pwerus ar gyfer prawf Ruby sy'n cynnig dulliau syml a chydlynol ar gyfer ysgrifennu profion. Drwy ddefnyddio RSpec, gallwch sicrhau bod eich cod yn gweithio fel y dymunir, gan leihau'r risg o wallau yn eich cymwysiadau. Mae'r tiwtorial hwn wedi rhoi'r sylfeini i chi ddechrau gyda RSpec, ond mae llawer mwy i'w ddysgu. Peidiwch ag oedi i archwilio'r ddogfennaeth swyddogol a phrofi eich sgiliau!
© 2024 RailsInsights. All rights reserved.