RSpec - Pencocokan
Jika Anda ingat contoh Hello World asli kami, itu berisi baris yang terlihat seperti ini -
expect(message).to eq "Hello World!"
Kata kunci eql adalah RSpec"Korek api". Di sini, kami akan memperkenalkan jenis korek api lainnya di RSpec.
Pencocokan Kesetaraan / Identitas
Pencocokan untuk menguji persamaan objek atau nilai.
Matcher | Deskripsi | Contoh |
---|---|---|
persamaan | Lulus saat sebenarnya == diharapkan | mengharapkan (aktual). untuk persamaan yang diharapkan |
eql | Lulus saat aktual.eql? (Diharapkan) | mengharapkan (aktual). untuk persamaan yang diharapkan |
menjadi | Lulus saat aktual.equal? (Diharapkan) | mengharapkan (aktual). diharapkan |
sama | Juga lolos saat aktual.equal? (Diharapkan) | mengharapkan (aktual). untuk sama diharapkan |
Contoh
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
Ketika kode di atas dijalankan, maka akan menghasilkan keluaran sebagai berikut. Jumlah detik mungkin sedikit berbeda di komputer Anda -
.
Finished in 0.036 seconds (files took 0.11901 seconds to load)
1 example, 0 failures
Pencocok Perbandingan
Pencocokan untuk membandingkan dengan nilai.
Matcher | Deskripsi | Contoh |
---|---|---|
> | Lulus saat sebenarnya> diharapkan | mengharapkan (aktual). menjadi> diharapkan |
> = | Lulus saat aktual> = diharapkan | mengharapkan (aktual). menjadi> = diharapkan |
< | Lulus saat sebenarnya <diharapkan | mengharapkan (aktual). menjadi <diharapkan |
<= | Lulus saat sebenarnya <= diharapkan | mengharapkan (aktual). menjadi <= diharapkan |
be_between inklusif | Lulus saat aktual <= min dan> = max | mengharapkan (aktual). untuk menjadi_between (min, max) .inclusive |
be_between eksklusif | Lulus saat aktual <min dan> maks | mengharapkan (aktual) .to be_between (min, max) .exclusive |
pertandingan | Lulus saat sebenarnya cocok dengan ekspresi reguler | mengharapkan (aktual). untuk mencocokkan (/ regex /) |
Contoh
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
Ketika kode di atas dijalankan, maka akan menghasilkan keluaran sebagai berikut. Jumlah detik mungkin sedikit berbeda di komputer Anda -
.
Finished in 0.013 seconds (files took 0.11801 seconds to load)
1 example, 0 failures
Pencocokan Kelas / Jenis
Pencocokan untuk menguji jenis atau kelas objek.
Matcher | Deskripsi | Contoh |
---|---|---|
be_instance_of | Lulus saat aktual adalah instance dari kelas yang diharapkan. | mengharapkan (aktual). menjadi_instance_of (Diharapkan) |
be_kind_of | Lulus saat aktual adalah instance dari kelas yang diharapkan atau salah satu dari kelas induknya. | mengharapkan (aktual). menjadi_kind_of (Diharapkan) |
menanggapi | Lulus saat respons aktual ke metode yang ditentukan. | mengharapkan (aktual). untuk merespon_to (diharapkan) |
Contoh
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
Ketika kode di atas dijalankan, maka akan menghasilkan keluaran sebagai berikut. Jumlah detik mungkin sedikit berbeda di komputer Anda -
.
Finished in 0.002 seconds (files took 0.12201 seconds to load)
1 example, 0 failures
Pencocokan Benar / Salah / Nihil
Pencocokan untuk menguji apakah suatu nilai benar, salah atau nihil.
Matcher | Deskripsi | Contoh |
---|---|---|
jadilah benar | Lulus saat aktual == benar | mengharapkan (aktual). menjadi benar |
salah | Lulus saat aktual == salah | mengharapkan (aktual). menjadi salah |
be_truthy | Lulus saat aktual tidak salah atau nihil | mengharapkan (aktual). untuk be_truthy |
be_falsey | Lulus saat aktual salah atau nihil | mengharapkan (aktual). untuk menjadi_falsey |
be_nil | Lulus saat aktual adalah nol | mengharapkan (aktual). menjadi be_nil |
Contoh
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
Ketika kode di atas dijalankan, maka akan menghasilkan keluaran sebagai berikut. Jumlah detik mungkin sedikit berbeda di komputer Anda -
.
Finished in 0.003 seconds (files took 0.12301 seconds to load)
1 example, 0 failures
Error Matchers
Pencocokan untuk pengujian, ketika sebuah blok kode menimbulkan kesalahan.
Matcher | Deskripsi | Contoh |
---|---|---|
raise_error (ErrorClass) | Lulus saat blok memunculkan kesalahan tipe ErrorClass. | mengharapkan {block} .to raise_error (ErrorClass) |
raise_error ("pesan kesalahan") | Lulus ketika blok menimbulkan kesalahan dengan pesan "pesan kesalahan". | mengharapkan {block} .to raise_error ("pesan kesalahan") |
raise_error (ErrorClass, "pesan kesalahan") | Lulus ketika blok memunculkan kesalahan tipe ErrorClass dengan pesan "pesan kesalahan" | mengharapkan {block} .to raise_error (ErrorClass, "pesan kesalahan") |
Contoh
Simpan kode berikut ke file dengan nama error_matcher_spec.rb dan jalankan dengan perintah ini - 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
Ketika kode di atas dijalankan, maka akan menghasilkan keluaran sebagai berikut. Jumlah detik mungkin sedikit berbeda di komputer Anda -
.
Finished in 0.002 seconds (files took 0.12101 seconds to load)
1 example, 0 failures