1

1 つが失敗し、1 つが合格する 2 つのテストを実行しています。唯一の違いは、:shouldvsの使用です:expect。1 つのテストが機能し、もう 1 つのテストが機能しないのはなぜですか?

合格テスト:

it "returns no comma, when the integer is smaller than 1000" do
  separate_comma(random_num(0, 999)).should match /^\d{1,3}$/
end

失敗したテスト:

it "explanation" do
  expect(separate_comma(random_num(0, 999))).to match /^\d{1,3}$/
end

退屈なものは次のとおりです。

def random_num(min, max)
   rand(max - min + 1) + min
end

def separate_comma(number, delimiter = ',')
  new = number.to_s.reverse.scan(/.../).join(delimiter)
end
4

1 に答える 1

3

これは答えではなく、関連する質問です。次の仕様は、OP のコードからコピーされた重要なコンテンツを渡します。OPの仕様がexpectケースで失敗する理由と、正規表現の周りの括弧が違いを生む理由を誰かが説明できますか? (注: Ruby 2.0 と RSpec 2.14 を使用しています)

def random_num(min, max)
   rand(max - min + 1) + min
end

def separate_comma(number, deliminator = ',')
  new = number.to_s.reverse.scan(/.../).join(deliminator)
end

describe "rspec expectations involving match, regex and no parentheses" do

  it "works for should" do
    separate_comma(random_num(0, 999)).should match /^\d{1,3}$/
  end

  it "works for expect" do
    expect(separate_comma(random_num(0, 999))).to match /^\d{1,3}$/
  end

end
于 2013-11-15T06:49:51.513 に答える