0

假设模型方法 foo() 返回一个数组[true, false, 'unable to create widget']

有没有办法编写一个 rspec 示例,将该数组作为验证 [0] = true、[1] = false 和 [2] 与 / 之类的正则表达式匹配的块传递

目前,我这样做:

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

我无法完全理解如何使用块来实现?

4

2 回答 2

1

它会稍微过度设计,但尝试使用--format documentation. 您将看到此方法的非常好的规范文档;)

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 回答