0

モデルメソッドfoo()が配列を返すと仮定します[true, false, 'unable to create widget']

[0] = true、[1] = false、[2]が/のような正規表現に一致することを確認するブロックとしてその配列を渡すrspecの例を書く方法はありますか?

現在、私はそれを次のようにしています:

result = p.foo
result[2].should match(/unable/i)
result[0].should == true
result[1].should == false

ブロックでそれがどのように実行できるのか、頭を悩ませることはできませんか?

4

2 に答える 2

1

少し過剰に設計されていますが、この仕様をで実行してみてください--format documentation。このメソッドの非常に優れたspecdocsが表示されます;)

describe '#some_method' do
  describe 'result' do
    let(:result) { subject.some_method }
    subject { result }

    it { should be_an_instance_of(Array) }

    describe 'first returned value' do
      subject { result.first }
      it { should be_false }
    end

    describe 'second returned value' do
      subject { result.second }
      it { should be_true }
    end

    describe 'third returned value' do
      subject { result.third }
      it { should == 'some value' }
    end
  end
end
于 2012-10-01T08:16:11.790 に答える
0

あなたresultはアレイであり、さまざまなケースをテストするために繰り返し処理する必要があるということですか?

次に、次のようにしてそれを行うことができます。

result = p.foo
result.each_with_index do |value, index|
  case index
  when 0 then value.should == true
  when 1 then value.should == false
  when 2 then value.shoud match(/unable/i)
  end 
end
于 2012-10-01T08:31:48.963 に答える