Skip to content
This repository has been archived by the owner on Jun 24, 2022. It is now read-only.

jeremyevans/minitest-shared_description

Repository files navigation

minitest-shared_description

Note: While this library works fine, it was only used by Sequel’s tests, and it is not longer used by Sequel, and no longer maintained. You can probably replace what this library does using regular modules with ‘extend Minitest::Spec::DSL` (shared examples without spec subclasses) or `instance_exec(&shared_block)` (shared examples with spec subclasses). See github.com/jeremyevans/sequel/commit/e192b52b06d62e08685d1451529f74d980ff80f6 for an example of how to replace the use of this library.

minitest-shared_description adds support for shared specs and shared spec subclasses to Minitest. Minitest supports shared specs by default using plain ruby modules, but does not support shared spec subclasses. In addition to making it possible to share subclasses, minitest-shared_desciption also provides a slightly nicer interface for sharing specs.

Installation

gem install minitest-shared_description

Source Code

Source code is available on GitHub at github.com/jeremyevans/minitest-shared_description

Usage

require 'minitest/shared_description'

SharedExamples = shared_description do
  # You can do regular specs
  it "should do something" do
    # something
  end

  # You can also have spec subclasses
  describe "nested specs" do
    # Called inside the before/after of the class that includes SharedExamples
    before {}
    after {}

    # Called inside the before/after of the class that includes SharedExamples
    # and the before/after in this class
    it "should do something else" do
      # something
    end
  end
end

describe "something" do
  include SharedExamples
end

You can also have shared descriptions that are included in other shared descriptions:

SharedExample1 = shared_description do
  describe "nested specs 1" do
    before {}
    after {}
    it "should do something" do end
  end
end

SharedExample2 = shared_description do
  describe "nested specs 2" do
    before {}
    after {}
    it "should do something else" do end
  end
end

SharedExamples = shared_description do
  # Include shared description in shared description block
  include SharedExample1

  describe "nested shared description use" do
    # Include shared description in shared description class
    include SharedExample2
  end
end

Compatibility with minitest-rails

For Rails projects that make use of the minitest-rails gem, extend ActiveSupport::TestCase with the TestMethods module in test_helper.rb.

class ActiveSupport::TestCase
  extend Minitest::Spec::SharedDescription::TestMethods
end

License

MIT

Author

Jeremy Evans <code@jeremyevans.net>

About

Support for shared specs and shared spec subclasses for Minitest

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages