Rspec-core: ํŠน์ • ์˜ˆ๋ฅผ ์ œ์™ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์— ๋งŒ๋“  2016๋…„ 06์›” 04์ผ  ยท  5์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: rspec/rspec-core

์•ˆ๋…•,

์ €๋Š” GNU Guix์šฉ์œผ๋กœ ๋ช‡ ๊ฐ€์ง€ rubygem์„ ํŒจํ‚ค์ง•ํ–ˆ์œผ๋ฉฐ ๊ฐ€๋” ํ•˜๊ณ  ์‹ถ์€ ํ•œ ๊ฐ€์ง€๋Š” ํŠน์ • ์˜ˆ์ œ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. rspec --example ํ”Œ๋ž˜๊ทธ์˜ ๋ฐ˜๋Œ€๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์˜ˆ๋ฅผ ๋“ค์–ด ํŠน์ • ํ…Œ์ŠคํŠธ๊ฐ€ ์•Œ๋ ค์ง„ ์‹คํŒจ์ผ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ž๋™ํ™”๋œ ๋นŒ๋“œ ์‹œ์Šคํ…œ์€ '๊ฒ€์‚ฌ' ๋‹จ๊ณ„๋ฅผ ์‹คํ–‰ํ•  ๋•Œ(๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผํ–ˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด) 0 ์ข…๋ฃŒ ์ƒํƒœ๋ฅผ ์š”๊ตฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ํŒŒ์ผ์„ ํŒจ์น˜ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•˜์ง€๋งŒ rspec์— ์šฐ๋ฆฌ๋ฅผ ๋Œ€์‹ ํ•ด ๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์‚ถ์ด ๋” ์‰ฌ์›Œ์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์ž‘์—…์„ ์ด๋ฏธ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์ด ๋ฌธ์ œ๊ฐ€ ๊ธฐ๋Šฅ ์š”์ฒญ์ž…๋‹ˆ๊นŒ?

๊ฐ์‚ฌ ํ•ด์š”,
๋ฒค

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

--exclude-example ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  5 ๋Œ“๊ธ€

๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ฐ --tag ์˜ˆ: https://relishapp.com/rspec/rspec-core/v/3-4/docs/command-line/tag-option )๋ฅผ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ์˜ˆ์ œ๋ฅผ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(์˜ˆ: https://relishapp.com/rspec/rspec-core/v/3-4/docs/filtering/inclusion-filters ๋ฐ https://relishapp.com/rspec/rspec-core/v/3์„ ํ†ตํ•ด ์กฐ๊ฑด๋ถ€๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹)

์•„๋งˆ๋„ ๋‚˜๋Š” ๋Š๋ฆฌ์ง€๋งŒ ๊ทธ ๋งํฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋„์›€์ด๋˜๋Š”์ง€ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์˜ˆ์ œ๊ฐ€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด ์‚ฌ์–‘์ด ์žˆ๋Š” ๊ฒฝ์šฐ:

$ cat ~/t/a.spec
require 'rspec'

class My
  def self.answer
    4
  end
end

RSpec.describe My, "#answer" do
  context 'good and bad' do
    it 'gives the right answer' do
      expect(My.answer).to eq 4
    end
    it 'gives the wrong answer' do
      expect(My.answer).to eq -1
    end
  end
end

๊ทธ๋ ‡๋‹ค๋ฉด ๋‹ค์Œ์„ ๋‹ฌ์„ฑํ•˜๋Š” ๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ์‹คํ–‰ํ•ฉ๋‹ˆ๊นŒ?

$ rspec ~/t/a.spec --exclude-example wrong

์‚ฌ์–‘ ํŒŒ์ผ ์ž์ฒด๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”.

RSpec.describe "My#answer" do
  context 'good and bad' do
    it 'gives the right answer', type: :right do
      expect(My.answer).to eq 4
    end
    it 'gives the wrong answer', type: :wrong do
      expect(My.answer).to eq -1
    end
  end
end

$ rspec ~/t/a.spec --tag @right ๋˜๋Š” $ rspec ~/t/a.spec --tag ~@wrong

type: wrong . ์‚ฌ์–‘์„ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ ๋Š” ์œ ์‚ฌํ•œ ๊ฒƒ์„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์ด ๋ฌธ์ œ๋ฅผ ๊ธฐ๋Šฅ ์š”์ฒญ์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๋‹ต๋ณ€์„ ๋“ฃ์Šต๋‹ˆ๊นŒ?

--exclude-example ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰