Γρήγορη αναφορά

Συνοπτικός οδηγός RSpec

Ένας περιεκτικός οδηγός αναφοράς για το RSpec: BDD δοκιμές στη Ruby, describe, context, it, matchers, let, subject, mocks και spies.

· Δημοσιεύτηκε

Το RSpec είναι ένα εργαλείο δοκιμών βάσει συμπεριφοράς (BDD) για τη γλώσσα Ruby.

Βασική δομή Spec

RSpec.describe Calculator do
  let(:calculator) { Calculator.new }

  describe "#add" do
    context "when adding positive numbers" do
      it "returns the arithmetic sum" do
        expect(calculator.add(2, 3)).to eq(5)
      end
    end

    context "when given invalid input" do
      it "raises an ArgumentError" do
        expect { calculator.add(2, "x") }.to raise_error(ArgumentError)
      end
    end
  end
end

Βασικοί Matchers

# Ισότητα
expect(actual).to eq(expected)       # Ισότητα τιμών (==)
expect(actual).to be(expected)       # Ταυτότητα αντικειμένου (equal?)

# Αληθοφάνεια & Κατηγορήματα
expect(actual).to be_truthy
expect(actual).to be_nil
expect(user).to be_active            # Καλεί τη μέθοδο user.active?

# Συλλογές (Collections)
expect(list).to include("ruby")
expect(list).to match_array([1, 2])  # Ίδια στοιχεία ανεξαρτήτως σειράς
expect(list).to be_empty

# Συγκρίσεις
expect(value).to be > 10
expect(value).to be_between(1, 100).inclusive

# Σφάλματα & Εξαιρέσεις
expect { risky_call }.to raise_error(StandardError, /message/)
expect { safe_call }.not_to raise_error

Mocks & Stubs (rspec-mocks)

# Stubbing μεθόδου
allow(user).to receive(:name).and_return("Alice")

# Προσδοκία κλήσης μεθόδου
expect(notifier).to receive(:send_email).with("[email protected]").once

# Double (εικονικό αντικείμενο mock)
mock_service = double("PaymentService", charge: true)

Πηγές & Αναφορές

Σχετικά θέματα