RSpec - Eşleştirenler
Orijinal Hello World örneğimizi hatırlarsanız, şuna benzeyen bir satır içeriyordu -
expect(message).to eq "Hello World!"
Eql anahtar kelimesi bir RSpec"Eşleştirici". Burada, RSpec'teki diğer eşleştirici türlerini tanıtacağız.
Eşitlik / Kimlik Eşleştiriciler
Nesne veya değer eşitliğini test etmek için eşleştiriciler.
Eşleştirici | Açıklama | Misal |
---|---|---|
eq | Gerçek == beklendiğinde geçer | beklenen (gerçek). eşdeğeri bekleniyor |
eql | Real.eql ne zaman geçer? (Beklenen) | beklenen (gerçek). |
olmak | Gerçek eşit olduğunda geçer? (Beklenen) | beklemek (gerçek). beklenmek |
eşit | Ayrıca, true.equal olduğunda da geçer (beklenen) | beklenen (gerçek). beklenen eşit |
Misal
describe "An example of the equality Matchers" do
it "should show how the equality Matchers work" do
a = "test string"
b = a
# The following Expectations will all pass
expect(a).to eq "test string"
expect(a).to eql "test string"
expect(a).to be b
expect(a).to equal b
end
end
Yukarıdaki kod çalıştırıldığında aşağıdaki çıktıyı üretecektir. Bilgisayarınızdaki saniye sayısı biraz farklı olabilir -
.
Finished in 0.036 seconds (files took 0.11901 seconds to load)
1 example, 0 failures
Karşılaştırma Eşleştiricileri
Değerlerle karşılaştırmak için eşleştiriciler.
Eşleştirici | Açıklama | Misal |
---|---|---|
> | Gerçek olduğunda> beklendiğinde geçer | beklemek (gerçek). beklenen olmak |
> = | Gerçek> = beklendiğinde geçer | beklenen (gerçek).> = beklenen |
< | Gerçek <beklendiğinde geçer | beklenen (gerçek). <beklenen |
<= | Gerçek <= beklendiğinde geçer | beklenen (gerçek). <= beklenen |
be_between kapsayıcı | Gerçek <= min ve> = maks olduğunda geçer | (gerçek). be_between (min, max) .inclusive |
be_between özel | Gerçek <min ve> maks olduğunda geçer | beklenen (gerçek). arasında (min, maks.). özel |
eşleşme | Gerçek bir normal ifadeyle eşleştiğinde geçer | (gerçek). eşleşmesini bekliyoruz (/ regex /) |
Misal
describe "An example of the comparison Matchers" do
it "should show how the comparison Matchers work" do
a = 1
b = 2
c = 3
d = 'test string'
# The following Expectations will all pass
expect(b).to be > a
expect(a).to be >= a
expect(a).to be < b
expect(b).to be <= b
expect(c).to be_between(1,3).inclusive
expect(b).to be_between(1,3).exclusive
expect(d).to match /TEST/i
end
end
Yukarıdaki kod çalıştırıldığında aşağıdaki çıktıyı üretecektir. Bilgisayarınızdaki saniye sayısı biraz farklı olabilir -
.
Finished in 0.013 seconds (files took 0.11801 seconds to load)
1 example, 0 failures
Sınıf / Tip Eşleştiriciler
Nesnelerin türünü veya sınıfını test etmek için eşleştiriciler.
Eşleştirici | Açıklama | Misal |
---|---|---|
be_instance_of | Gerçek, beklenen sınıfın bir örneği olduğunda geçer. | beklemek (gerçek). be_instance_of (Beklenen) |
be_kind_of | Gerçek, beklenen sınıfın veya üst sınıflarından herhangi birinin bir örneği olduğunda geçer. | beklemek (gerçek). olmak_kind_of (Beklenen) |
cevap ver | Gerçek belirtilen yönteme yanıt verdiğinde geçer. | beklemek (gerçek). yanıt vermek (beklenen) |
Misal
describe "An example of the type/class Matchers" do
it "should show how the type/class Matchers work" do
x = 1
y = 3.14
z = 'test string'
# The following Expectations will all pass
expect(x).to be_instance_of Fixnum
expect(y).to be_kind_of Numeric
expect(z).to respond_to(:length)
end
end
Yukarıdaki kod çalıştırıldığında aşağıdaki çıktıyı üretecektir. Bilgisayarınızdaki saniye sayısı biraz farklı olabilir -
.
Finished in 0.002 seconds (files took 0.12201 seconds to load)
1 example, 0 failures
Doğru / Yanlış / Sıfır Eşleştiriciler
Bir değerin true, false veya nil olup olmadığını test etmek için eşleştiriciler.
Eşleştirici | Açıklama | Misal |
---|---|---|
Gerçek olmak | Gerçek == doğru olduğunda geçer | beklemek (gerçek). doğru olmasını |
yanlış ol | Gerçek olduğunda geçer == false | beklemek (gerçek). yanlış olmak |
be_truthy | Gerçek yanlış veya sıfır olmadığında geçer | beklemek (gerçek). |
be_falsey | Gerçek yanlış veya sıfır olduğunda geçer | beklemek (gerçek). be_falsey |
be_nil | Gerçek sıfır olduğunda geçer | beklemek (gerçek). olmak_nil |
Misal
describe "An example of the true/false/nil Matchers" do
it "should show how the true/false/nil Matchers work" do
x = true
y = false
z = nil
a = "test string"
# The following Expectations will all pass
expect(x).to be true
expect(y).to be false
expect(a).to be_truthy
expect(z).to be_falsey
expect(z).to be_nil
end
end
Yukarıdaki kod çalıştırıldığında aşağıdaki çıktıyı üretecektir. Bilgisayarınızdaki saniye sayısı biraz farklı olabilir -
.
Finished in 0.003 seconds (files took 0.12301 seconds to load)
1 example, 0 failures
Hata Eşleştiriciler
Bir kod bloğu hata verdiğinde test için eşleştiriciler.
Eşleştirici | Açıklama | Misal |
---|---|---|
yükseltmek_error (ErrorClass) | Blok, ErrorClass türünde bir hata oluşturduğunda geçer. | {blok} hatasının yükseltilmesini bekliyorum (Hata Sınıfı) |
Raise_error ("hata mesajı") | Blok, "hata mesajı" mesajıyla bir hata oluşturduğunda geçer. | {block} 'un yükseltmesini_error olmasını bekliyoruz ("hata mesajı") |
Raise_error (Hata Sınıfı, "hata mesajı") | Blok "hata mesajı" mesajıyla ErrorClass türünde bir hata oluşturduğunda geçer | {block} 'un yükseltmesini bekle (Hata Sınıfı, "hata mesajı") |
Misal
Aşağıdaki kodu adıyla bir dosyaya kaydedin error_matcher_spec.rb ve bu komutla çalıştırın - rspec error_matcher_spec.rb.
describe "An example of the error Matchers" do
it "should show how the error Matchers work" do
# The following Expectations will all pass
expect { 1/0 }.to raise_error(ZeroDivisionError)
expect { 1/0 }.to raise_error("divided by 0")
expect { 1/0 }.to raise_error("divided by 0", ZeroDivisionError)
end
end
Yukarıdaki kod çalıştırıldığında aşağıdaki çıktıyı üretecektir. Bilgisayarınızdaki saniye sayısı biraz farklı olabilir -
.
Finished in 0.002 seconds (files took 0.12101 seconds to load)
1 example, 0 failures