class Calculator def initialize(initial_value = 0) @result = initial_value end def add(a, b) @result = a + b end end
RSpec.describe Calculator do subject { Calculator.new(10) } describe "#add" do it "returns the sum of two numbers" do subject.add(3, 4) # eq - проверяет на равенство expect(subject.result).to eq(17) # be - проверяет на идентичность (обычно используется для чисел и символов) expect(subject.result).to be == 17 # eql - проверяет на равенство значений и типов expect(subject.result).to eql(17) # equal - проверяет на идентичность объектов expect(subject.result).to equal(subject.result) # be_truthy - проверяет, что значение истинно (не nil и не false) expect(subject.result).to be_truthy # be_falsey - проверяет, что значение ложно (nil или false) expect(subject.result).not_to be_falsey # be_nil - проверяет, что значение nil expect(subject.result).not_to be_nil # be_between - проверяет, что значение находится в диапазоне expect(subject.result).to be_between(16, 18) # match - проверяет, что строка соответствует регулярному выражению expect(subject.result.to_s).to match(/\A17\z/) # start_with - проверяет, что строка начинается с заданного префикса expect(subject.result.to_s).to start_with('17') # end_with - проверяет, что строка заканчивается заданным суффиксом expect(subject.result.to_s).to end_with('17') # include - проверяет, что массив или строка содержит элемент expect([17]).to include(subject.result) # contain_exactly - проверяет, что массив содержит ровно указанные элементы expect([17]).to contain_exactly(subject.result) # have_attributes - проверяет, что объект имеет указанные атрибуты expect(subject).to have_attributes(result: 17) # respond_to - проверяет, что объект отвечает на указанный метод expect(subject).to respond_to(:result) # raise_error - проверяет, что вызов метода вызывает исключение expect { raise StandardError }.to raise_error(StandardError) # change - проверяет, что вызов метода изменяет состояние объекта expect { subject.add(0, 0) }.to change { subject.result }.from(17).to(17) # satisfy - проверяет, что значение удовлетворяет произвольному условию expect(subject.result).to satisfy { |value| value == 17 } end end end