RSpec - Matchers
Jeśli pamiętasz nasz oryginalny przykład Hello World, zawierał on wiersz, który wyglądał następująco:
expect(message).to eq "Hello World!"
Słowo kluczowe eql to RSpec„Dopasowujący”. Tutaj przedstawimy inne typy dopasowań w RSpec.
Równość / Dopasowanie tożsamości
Dopasowania do testowania pod kątem równości obiektów lub wartości.
Matcher | Opis | Przykład |
---|---|---|
eq | Przechodzi, gdy faktyczne == oczekiwano | spodziewany (rzeczywisty) .do eq |
eql | Przechodzi, gdy current.eql? (Oczekiwane) | oczekiwać (rzeczywiste) .do eql oczekiwano |
być | Przechodzi, gdy faktyczne. Równe? (Oczekiwane) | spodziewać się (rzeczywiste) |
równy | Przechodzi również, gdy current.equal? (Oczekiwane) | oczekiwać (rzeczywiste). równe oczekiwane |
Przykład
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
Gdy powyższy kod zostanie wykonany, wygeneruje następujący wynik. Liczba sekund może się nieznacznie różnić na Twoim komputerze -
.
Finished in 0.036 seconds (files took 0.11901 seconds to load)
1 example, 0 failures
Porównanie dopasowań
Dopasowania do porównywania z wartościami.
Matcher | Opis | Przykład |
---|---|---|
> | Przechodzi, gdy rzeczywisty> oczekiwany | oczekiwać (rzeczywiste). być> oczekiwane |
> = | Przechodzi, gdy rzeczywista> = oczekiwana | oczekiwać (rzeczywiste). być> = oczekiwane |
< | Przechodzi, gdy faktycznie <oczekiwano | oczekiwać (rzeczywiste). być <oczekiwane |
<= | Przechodzi, gdy faktyczne <= oczekiwane | oczekiwać (rzeczywiste). być <= oczekiwane |
be_between włącznie | Przechodzi, gdy wartość rzeczywista wynosi <= min i> = maks | oczekiwać (rzeczywiste). to be_between (min, max) .inclusive |
be_between na wyłączność | Przechodzi, gdy wartość rzeczywista wynosi <min i> maks | oczekiwać (rzeczywiste). to be_between (min, max) .exclusive |
mecz | Przechodzi, gdy rzeczywisty pasuje do wyrażenia regularnego | oczekiwać (rzeczywiste). dopasować (/ regex /) |
Przykład
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
Gdy powyższy kod zostanie wykonany, wygeneruje następujący wynik. Liczba sekund może się nieznacznie różnić na Twoim komputerze -
.
Finished in 0.013 seconds (files took 0.11801 seconds to load)
1 example, 0 failures
Dopasowywanie klas / typów
Dopasowania do testowania typu lub klasy obiektów.
Matcher | Opis | Przykład |
---|---|---|
be_instance_of | Przechodzi, gdy rzeczywista jest instancją oczekiwanej klasy. | oczekiwać (rzeczywiste) .to be_instance_of (oczekiwane) |
be_kind_of | Przechodzi, gdy rzeczywiste jest instancją oczekiwanej klasy lub którejkolwiek z jej klas nadrzędnych. | oczekiwać (rzeczywiste). to be_kind_of (oczekiwane) |
odpowiedzi na | Przechodzi, gdy rzeczywisty odpowiada na określoną metodę. | oczekiwać (rzeczywisty). to respond_to (oczekiwany) |
Przykład
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
Gdy powyższy kod zostanie wykonany, wygeneruje następujący wynik. Liczba sekund może się nieznacznie różnić na Twoim komputerze -
.
Finished in 0.002 seconds (files took 0.12201 seconds to load)
1 example, 0 failures
Dopasowania prawda / fałsz / zero
Dopasowania do testowania, czy wartość jest prawdziwa, fałszywa lub zerowa.
Matcher | Opis | Przykład |
---|---|---|
Mów prawdę | Przechodzi, gdy current == true | oczekiwać (rzeczywiste). być prawdziwe |
być fałszywe | Przechodzi, gdy current == false | oczekiwać (rzeczywiste). być fałszywe |
be_truthy | Przechodzi, gdy wartość rzeczywista nie jest fałszywa lub zerowa | oczekiwać (rzeczywistego). to be_truthy |
be_falsey | Przechodzi, gdy wartość rzeczywista jest fałszywa lub zerowa | oczekiwać (rzeczywistego). to be_falsey |
be_nil | Przechodzi, gdy wartość rzeczywista wynosi zero | oczekiwać (rzeczywiste). to be_nil |
Przykład
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
Gdy powyższy kod zostanie wykonany, wygeneruje następujący wynik. Liczba sekund może się nieznacznie różnić na Twoim komputerze -
.
Finished in 0.003 seconds (files took 0.12301 seconds to load)
1 example, 0 failures
Dopasowywanie błędów
Dopasowania do testowania, gdy blok kodu wywołuje błąd.
Matcher | Opis | Przykład |
---|---|---|
podnieść_error (ErrorClass) | Przechodzi, gdy blok wywołuje błąd typu ErrorClass. | spodziewać się {blok} .to podnieść_error (ErrorClass) |
podnieść_error ("komunikat o błędzie") | Pomija, gdy blok zgłosi błąd z komunikatem „komunikat o błędzie”. | oczekuj {blok} .to podnieść_error („komunikat o błędzie”) |
podnieść_error (ErrorClass, „komunikat o błędzie”) | Przechodzi, gdy blok wywołuje błąd typu ErrorClass z komunikatem „komunikat o błędzie” | oczekuj {blok} .to podnieść_error (ErrorClass, „komunikat o błędzie”) |
Przykład
Zapisz poniższy kod w pliku o nazwie error_matcher_spec.rb i uruchom go za pomocą tego polecenia - 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
Gdy powyższy kod zostanie wykonany, wygeneruje następujący wynik. Liczba sekund może się nieznacznie różnić na Twoim komputerze -
.
Finished in 0.002 seconds (files took 0.12101 seconds to load)
1 example, 0 failures