Ruby|RSpec 메소드를 통한 테스트(블록 포함)
6779 단어 Ruby
얼마 지나지 않아 Rspec이 방법을 잘 불렀죠?나는 이런 시험을 쓸 수 있을 것이라고 생각한다.
with
를 사용하면 조준 파라미터의 값이 초과되었는지 확인할 수 있지만 블록이 있는 것은 어떻게 하는지 조사했기 때문에 그 노트입니다.먼저 한 말은'&수속 대상'상황에서만 검증할 수 있다.
전기
검증에 사용되는 프로그램 사용 Deck
클래스입니다.이것은 카드를 씻을 수 있는 몇 장의 카드가 있는데, 짝수와 홀수를 분리할 수 있다.이번 검증은 Deck#split_even_numbers
Enumerable#partition
에 블록을 보내는 것으로 RSpec로 그걸 테스트하는 방법이다.
원래 호출 방법의 결과를 검증해야 하기 때문에 호출 방법만 테스트하는 것이 좋다고 말할 수 없다.사용량 준수는 형과의 약속입니다class Deck
def initialize(cards)
@cards = cards
end
def shuffle
@cards.shuffle
end
def split_even_numbers
@cards.partition { |card| card.even? }
end
def split_odd_numbers
@cards.partition(&:odd?)
end
end
RSpec
블록 검증
with
에 블록을 지정하면 받을 수 있을 것 같다{ |card| card.even? }
.&block
이기 때문에 Proc
류의 대상이다.Proc
제작류의 대상을 비교하면 되는 건가!그렇게 생각했지만 주어진 방법의 네모난 블록과 달리 테스트가 순조롭게 진행되지 못했다describe Deck do
describe '#split_even_numbers' do
let(:deck) { Deck.new(cards) }
let(:cards) { [5, 4, 3, 2, 1] }
it do
expect(cards).to receive(:partition).with(no_args) do |&block|
# この検証はうまくいかない
expect(block).to eq(Proc.new{ |card| card.even? })
end
deck.split_even_numbers
end
end
end
& 프로세스 대상
'&수속 대상'이라지만 검증Proc
류의 대상과 테스트 중 기대치가 같은 대상을 원한다면 이번에 하고 싶은 일을 할 수 있다.:odd?.to_proc
는 항상 같은 대상을 되돌려주기 때문에 검증에서 기대하는 결과를 얻을 수 있다.describe Deck do
describe '#split_odd_numbers' do
let(:deck) { Deck.new(cards) }
let(:cards) { [5, 4, 3, 2, 1] }
it do
expect(cards).to receive(:partition).with(no_args) do |&block|
expect(block).to eq(:odd?.to_proc)
end
deck.split_odd_numbers
end
end
end
Reference
이 문제에 관하여(Ruby|RSpec 메소드를 통한 테스트(블록 포함)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/guppy0356/items/ad370b78883a3eba399c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
class Deck
def initialize(cards)
@cards = cards
end
def shuffle
@cards.shuffle
end
def split_even_numbers
@cards.partition { |card| card.even? }
end
def split_odd_numbers
@cards.partition(&:odd?)
end
end
블록 검증
with
에 블록을 지정하면 받을 수 있을 것 같다{ |card| card.even? }
.&block
이기 때문에 Proc
류의 대상이다.Proc
제작류의 대상을 비교하면 되는 건가!그렇게 생각했지만 주어진 방법의 네모난 블록과 달리 테스트가 순조롭게 진행되지 못했다describe Deck do
describe '#split_even_numbers' do
let(:deck) { Deck.new(cards) }
let(:cards) { [5, 4, 3, 2, 1] }
it do
expect(cards).to receive(:partition).with(no_args) do |&block|
# この検証はうまくいかない
expect(block).to eq(Proc.new{ |card| card.even? })
end
deck.split_even_numbers
end
end
end
& 프로세스 대상
'&수속 대상'이라지만 검증
Proc
류의 대상과 테스트 중 기대치가 같은 대상을 원한다면 이번에 하고 싶은 일을 할 수 있다.:odd?.to_proc
는 항상 같은 대상을 되돌려주기 때문에 검증에서 기대하는 결과를 얻을 수 있다.describe Deck do
describe '#split_odd_numbers' do
let(:deck) { Deck.new(cards) }
let(:cards) { [5, 4, 3, 2, 1] }
it do
expect(cards).to receive(:partition).with(no_args) do |&block|
expect(block).to eq(:odd?.to_proc)
end
deck.split_odd_numbers
end
end
end
Reference
이 문제에 관하여(Ruby|RSpec 메소드를 통한 테스트(블록 포함)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/guppy0356/items/ad370b78883a3eba399c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)