Referencia rápida

Chuleta de Minitest

Guía de referencia rápida para Ruby Minitest: pruebas unitarias, especificaciones BDD, aserciones, Minitest::Mock y reporteros.

· Publicado

Minitest ofrece un conjunto completo de herramientas de pruebas que admiten TDD, BDD, mocks y evaluación comparativa para Ruby.

Pruebas Unitarias (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

Especificaciones 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

Aserciones y Expectativas

Aserción (assert) Refutación (refute) Expectativa de Spec (_())
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

Mocks con 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

Generadores de Informes Personalizados

gem 'minitest-reporters'

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

Referencias

Temas relacionados