Rspec匹配语法

时间:2013-11-15 20:37:55

标签: ruby-on-rails ruby regex rspec

第一次测试通过,但其他两次没有。我的语法错在哪里?唯一的区别是matcheq。我知道我之前使用过match,但我似乎无法在网上找到好的文档。

我得到的错误是:undefined method 'match' for 1:Fixnum

describe Die do
    describe "new roll" do #TEST PASSES
        it "returns a number" do
            expect(Die.instance_method(:initialize).arity).to eq 1
        end
    end

    describe "new roll" do # error undefined method 'match' for 1:Fixnum
        it "returns a number" do
            expect(Die.instance_method(:initialize).arity).to match 1
        end
    end

    describe "new roll" do # error expected /\d/ got 1
        it "returns a number" do
            expect(Die.instance_method(:initialize).arity).to eq (/\d/)
        end
    end
end

1 个答案:

答案 0 :(得分:2)

你的第二个测试没有通过,因为match可以将字符串或正则表达式与字符串进行比较,而不是Fixnums。您的第三个测试未通过,因为正则表达式/\d/ 1相等匹配字符串"1"

describe Die do
    describe "new roll" do #TEST PASSES
        it "returns a number" do
            expect(Die.instance_method(:initialize).arity).to eq(1)
        end
    end

    describe "new roll" do
        it "returns a number" do
            # 1.to_s equals the String "1" ...
            expect(Die.instance_method(:initialize).arity.to_s).to eq("1")
        end
    end

    describe "new roll" do
        it "returns a number" do
            # ... and "1" matches the regex /\d/
            expect(Die.instance_method(:initialize).arity.to_s).to match(/\d/)
        end
    end
end