我创建了一个类SourceReader
,它解析一个文件,并根据文件中识别的标记的数量产生多次。例如,如果我解析file1.txt
,它将只产生一次值one
。另一个例子是,当我解析file2.txt
时,它将产生两次,第一次是值one
,然后是值two
。
如何使用rspec正确地测试它?以下是我到目前为止所做的:
require './spec/spec_helper'
describe SourceReader do
describe '#each_card' do
context "given file with one card" do
input_filename = './spec/data/file1_spec.txt'
it 'yields once, with arguments "one"' do
File.open(input_filename, 'r') do |file|
sut = SourceReader.new(file)
expect(sut.each_card).to yield_with_args('one')
end
end
end
context "given file with two cards" do
input_filename = './spec/data/file2_spec.txt'
it 'yields twice, with arguments "one", then "two"' do
# some codes
end
end
end
end
我对如何实现文档中的expect { |b| object.action(&b) }.to yield_with_args
感到困惑
2条答案
按热度按时间hc8w905p1#
cwxwcias2#
使用yield_successive_args: