Rails Insights

Tiwtorial Sylfaenol RSpec ar gyfer Prawf Ruby

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!

Beth yw RSpec?

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.

Gosod RSpec

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.

Ysgrifennu Profion Sylfaenol

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

Enghraifft o Brawf

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.

Defnyddio 'let' a 'before'

Mae RSpec yn cynnig rhai dulliau defnyddiol i wneud eich profion yn fwy effeithlon. Mae 'let' a 'before' yn ddau ohonynt:

  • let: Mae 'let' yn creu newidyn a fydd ar gael yn y profion. Mae'n cael ei greu yn unig pan fydd ei angen.
  • before: Mae 'before' yn caniatáu i chi wneud rhywbeth cyn i'r prawf gael ei gynnal, fel gosod cyflyrau cychwynnol.

Enghraifft o 'let' a 'before'

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

Profion Negyddol

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.

Defnyddio 'context'

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

Rhedeg Profion

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.

Defnyddio 'RSpec::Mocks'

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.

Casgliad

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!

Published: August 12, 2024

© 2024 RailsInsights. All rights reserved.