Если вы помните наш оригинальный пример Hello World, он содержал строку, которая выглядела так:
expect(message).to eq "Hello World!"
Ключевое слово eql — это RSpec «matcher». Здесь мы представим другие типы сопоставителей в RSpec.
Равенство / Идентичность
Сопоставители для проверки на предмет или равенство значений.
Сличитель | Описание | пример |
---|---|---|
уравнение | Проходит, когда актуально == ожидается | ожидаемый (фактический). к ожидаемому |
EQL | Проходит, когда актуально. | ожидаемый (фактический). до ожидаемого |
быть | Проходит, когда актуально. | ожидать (факт). быть ожидаемым |
равный | Также проходит, когда фактический.?? (Ожидается) | ожидаемый (фактический). равный ожидаемому |
пример
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
Когда приведенный выше код будет выполнен, он выдаст следующий вывод. Количество секунд может немного отличаться на вашем компьютере —
. Finished in 0.036 seconds (files took 0.11901 seconds to load) 1 example, 0 failures
Сравнители
Сопоставители для сравнения со значениями.
Сличитель | Описание | пример |
---|---|---|
> | Проходит, когда факт> ожидается | ожидать (фактическое). быть> ожидаемым |
> = | Проходит, когда актуально> = ожидается | ожидать (фактическое). быть> = ожидается |
< | Проходит, когда фактический <ожидается | ожидать (фактическое). быть <ожидается |
<= | Проходит, когда фактический <= ожидаемый | ожидать (фактическое). быть <= ожидается |
be_between включительно | Проходит, когда фактическое значение <= min и> = max | ожидаемый (фактический) .в be_between (min, max) .inclusive |
be_between эксклюзив | Проходит, когда фактический <min и> max | ожидаемый (фактический) .в be_between (min, max) .exclusive |
матч | Проходит, когда фактическое соответствует регулярному выражению | ожидать (фактическое). к совпадению (/ regex /) |
пример
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
Когда приведенный выше код будет выполнен, он выдаст следующий вывод. Количество секунд может немного отличаться на вашем компьютере —
. Finished in 0.013 seconds (files took 0.11801 seconds to load) 1 example, 0 failures
Сопоставители классов / типов
Сопоставители для проверки типа или класса объектов.
Сличитель | Описание | пример |
---|---|---|
be_instance_of | Проходит, когда фактический является экземпляром ожидаемого класса. | ожидаемый (фактический) .в be_instance_of (ожидаемый) |
be_kind_of | Проходит, когда фактический является экземпляром ожидаемого класса или любого из его родительских классов. | ожидаемый (фактический) .to be_kind_of (ожидаемый) |
respond_to | Проходит, когда фактическое отвечает на указанный метод. | ожидаемый (фактический) .to response_to (ожидаемый) |
пример
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
Когда приведенный выше код будет выполнен, он выдаст следующий вывод. Количество секунд может немного отличаться на вашем компьютере —
. Finished in 0.002 seconds (files took 0.12201 seconds to load) 1 example, 0 failures
True / False / Nil Matchers
Соответствует для проверки, является ли значение истинным, ложным или нулевым.
Сличитель | Описание | пример |
---|---|---|
быть правдой | Проходит, когда актуально == правда | ожидать (фактическое). быть правдой |
быть ложным | Проходит, когда актуально == ложно | ожидать (фактическое). быть ложным |
be_truthy | Проходит, когда фактический не ложь или ноль | ожидать (фактическое). to be_truthy |
be_falsey | Проходит, когда фактическое значение равно false или равно нулю | ожидать (фактический) .в be_falsey |
be_nil | Проходит, когда фактический ноль | ожидать (фактический) .в be_nil |
пример
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
Когда приведенный выше код будет выполнен, он выдаст следующий вывод. Количество секунд может немного отличаться на вашем компьютере —
. Finished in 0.003 seconds (files took 0.12301 seconds to load) 1 example, 0 failures
Сопоставление ошибок
Сопоставители для тестирования, когда блок кода вызывает ошибку.
Сличитель | Описание | пример |
---|---|---|
raise_error (ErrorClass) | Проходит, когда блок вызывает ошибку типа ErrorClass. | ожидать {блок} .в поднять_ошибку (ErrorClass) |
повышение_ответа («сообщение об ошибке») | Проходит, когда блок выдает ошибку с сообщением «error error». | Ожидаем {block} .to повысить_error («сообщение об ошибке») |
повышение_еррор (ErrorClass, «сообщение об ошибке») | Проходит, когда блок выдает ошибку типа ErrorClass с сообщением «error error» | wait {block} .to повысить_error (ErrorClass, «сообщение об ошибке») |
пример
Сохраните следующий код в файл с именем error_matcher_spec.rb и запустите его с помощью этой команды — 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
Когда приведенный выше код будет выполнен, он выдаст следующий вывод. Количество секунд может немного отличаться на вашем компьютере —