مرجع سريع

ورقة غش Minitest

دليل مرجعي سريع لـ Ruby Minitest: اختبارات الوحدة، مواصفات BDD، مطابقات التوقع، التوكيدات، Minitest::Mock والتقارير.

· تاريخ النشر

يوفر Minitest مجموعة متكاملة من أدوات الاختبار التي تدعم TDD و BDD والمحاكاة (Mocking) وقياس الأداء في Ruby.

اختبارات الوحدة (Minitest::Test)

require 'minitest/autorun'

class TestUser < Minitest::Test
  def setup
    @user = User.new(name: "Alice", email: "[email protected]")
  end

  def teardown
    @user = nil
  end

  def test_name_attribute
    assert_equal "Alice", @user.name
  end

  def test_active_status
    refute @user.banned?
  end
end

مواصفات BDD (describe / it)

require 'minitest/autorun'

describe User do
  before do
    @user = User.new("Bob")
  end

  let(:account) { Account.new(balance: 100) }

  it "must return valid formatted name" do
    _(@user.name).must_equal "Bob"
  end

  it "must maintain sufficient balance" do
    _(account.balance).must_be :>=, 50
  end
end

التوكيدات والتوقعات (Assertions & Expectations)

التوكيد (assert) النفي (refute) توقع المواصفة (_())
assert test refute test _(test).must_equal true
assert_equal a, b refute_equal a, b _(b).must_equal a
assert_nil x refute_nil x _(x).must_be_nil
assert_empty list refute_empty list _(list).must_be_empty
assert_includes list, item refute_includes list, item _(list).must_include item
assert_match /re/, str refute_match /re/, str _(str).must_match /re/
assert_instance_of Cls, obj refute_instance_of _(obj).must_be_instance_of Cls
assert_kind_of Mod, obj refute_kind_of _(obj).must_be_kind_of Mod
assert_raises(Err) { ... } — _{ ... }.must_raise Err
assert_silent { ... } — _{ ... }.must_be_silent

المحاكاة باستخدام Minitest::Mock

require 'minitest/autorun'

describe PaymentGateway do
  it "charges the credit card through processor" do
    processor = Minitest::Mock.new
    # expect(method, return_value, expected_arguments)
    processor.expect :charge, true, [100.0, "tok_visa"]

    gateway = PaymentGateway.new(processor)
    gateway.process_payment(100.0, "tok_visa")

    assert processor.verify
  end
end

مخصص تقارير الاختبار (Custom Reporters)

gem 'minitest-reporters'

require 'minitest/reporters'
Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new

مراجع

موضوعات ذات صلة