Ruby on rails Webrat在';如果';语句被使用

Ruby on rails Webrat在';如果';语句被使用,ruby-on-rails,rspec,webrat,Ruby On Rails,Rspec,Webrat,我一直在rails 3.0.7项目中使用webrat,并尝试编写一个使用正则表达式的测试。它应该失败,但if声明似乎破坏了结果 it "should have 'microposts' if 0 posted" do visit root_path response.should have_selector('span.microposts') do |span| if span =~ /\d/ span.should cont

我一直在rails 3.0.7项目中使用webrat,并尝试编写一个使用正则表达式的测试。它应该失败,但if声明似乎破坏了结果

    it "should have 'microposts' if 0 posted" do
      visit root_path
      response.should have_selector('span.microposts') do |span|
        if span =~ /\d/
          span.should contain('hello')
        end
      end
    end
测试试图确认测试是否成功,但在使用“if”语句时仍然成功。它正在尝试匹配内容“0”

当我使用这些行替换“if”语句时:

   response.should have_selector('span.microposts') do |counter|
     counter.should contain(/hello/)
   end
我让测试最终像预期的那样失败了,但是我没有像我在上面试图验证的那样验证跨度内内容前面的数字

韦伯拉特是不是把if语句交得不好,还是我做错了什么


提前谢谢

你似乎错过了一个
结尾
,但我不知道这怎么会不爆炸

it "should have 'microposts' if 0 posted" do
  visit root_path
  response.should have_selector('span.microposts') do |span|
    if span =~ /\d/
      span.should contain('hello')
    end
  end
end

我的代码中确实有这个结尾,但忘了在这里包含它。刚刚更新了问题。你认为webrat可能不喜欢超过一层的深度吗?那么
span.应该span=~/\d/&&contain('hello')