Skip to content

add let, subject, described_class, before and after to native specs

License

Notifications You must be signed in to change notification settings

ramon-sg/extend_spec

Repository files navigation

extend_spec

A small Crystal shard to extend native spec with:

  • No global scope pollution
  • No Object pollution
  • Add Described alias for Class or Module
  • Ability to specify before and after blocks
  • Ability to define let, let!, subject and subject!

Installation

  1. Add the dependency to your shard.yml:

    development_dependencies:
      extend_spec:
        github: ramon-sg/extend_spec
  2. Run shards install

Usage

Add this to your spec_helper.cr:

require "extend_spec"

Example

class Ninja
  property name : String
  property last_name : String

  def initialize(@last_name, @name)
  end

  def full_name
    "#{last_name} #{name}"
  end
end

describe Ninja do
  let(name) { "Kakashi" }
  let(last_name : String) { "Hatake" }

  subject { Described.new(last_name, name) }

  describe "#full_name" do
    it "returns full name" do
      subject.full_name.should eq("Hatake Kakashi")
    end

    context "when name change" do
      before { subject.name = "Sakumo" }

      it "returns full name" do
        subject.full_name.should eq("Hatake Sakumo")
      end
    end
  end
end

Real example in spec/dummy_db_spec.cr

Contributing

  1. Fork it (https://github.com/ramon-sg/extend_spec/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

About

add let, subject, described_class, before and after to native specs

Resources

License

Stars

Watchers

Forks

Packages

No packages published