Module: Fix::Matcher Private

Includes:
Matchi
Included in:
Dsl
Defined in:
lib/fix/matcher.rb

Overview

This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.

Note:

All matchers can be used with MUST, MUST_NOT, SHOULD, SHOULD_NOT, and MAY

Collection of expectation matchers. Provides a comprehensive set of matchers for testing different aspects of objects.

The following matchers are available:

Basic Comparison:

  • eq(expected) # Checks equality using eql? it MUST eq(42) it MUST eq("hello")
  • eql(expected) # Alias for eq
  • be(expected) # Checks exact object identity using equal? string = "test" it MUST be(string) # Passes only if it's the same object
  • equal(expected) # Alias for be

Type Checking:

  • be_an_instance_of(class) # Checks exact class match it MUST be_an_instance_of(Array)
  • be_a_kind_of(class) # Checks class inheritance and module inclusion it MUST be_a_kind_of(Enumerable)

State & Changes:

  • change(object, method) # Base for checking state changes .by(n) # Exact change by n it MUST change(user, :points).by(5) .by_at_least(n) # Minimum change by n it MUST change(counter, :value).by_at_least(10) .by_at_most(n) # Maximum change by n it MUST change(account, :balance).by_at_most(100) .from(old).to(new) # Change from old to new value it MUST change(user, :status).from("pending").to("active") .to(new) # Change to new value it MUST change(post, :title).to("Updated")

Value Testing:

  • be_within(delta).of(value) # Checks numeric value within delta it MUST be_within(0.1).of(3.14)
  • match(regex) # Tests against regular expression it MUST match(/^\d3-\d2-\d4$/) # SSN format
  • satisfy { |value| ... } # Custom matcher with block it MUST satisfy { |num| num.even? && num > 0 }

Exceptions:

  • raise_exception(class) # Checks if code raises exception it MUST raise_exception(ArgumentError) it MUST raise_exception(CustomError, "specific message")

State Testing:

  • be_true # Tests for true it MUST be_true # Only passes for true, not truthy values
  • be_false # Tests for false it MUST be_false # Only passes for false, not falsey values
  • be_nil # Tests for nil it MUST be_nil

Predicate Matchers:

  • be_* # Matches object.*? method it MUST be_empty # Calls empty? it MUST be_valid # Calls valid? it MUST be_frozen # Calls frozen?
  • have_* # Matches object.has_*? method it MUST have_key(:id) # Calls has_key? it MUST have_errors # Calls has_errors?