Project

fix-expect

0.0
Low commit activity in last 3 years
No release in over a year
Fix extension gem to provide the expect syntax.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

= 1.0.0.beta4
 Project Readme

Fix::Expect

Build Status Code Climate Gem Version Inline docs Documentation

Provides the expect syntax.

Installation

Add this line to your application's Gemfile:

gem "fix-expect"

And then execute:

$ bundle

Or install it yourself as:

$ gem install fix-expect

Usage

The expect method

Fix::Expect lets you express expected outcomes on an object, thanks to Spectus's MUST and MUST_NOT requirement levels.

An absolute requirement example:

Fix do
  it { expect(-42.abs).to equal 42 }
end

(irb):2: Success: expected to equal 42.

An absolute prohibition example:

Fix do
  it { expect(-42).not_to equal 42 }
end

(irb):5: Success: expected -42 not to equal 42.

Thus, rather than inferring the actual value (which is 41.next) from the context and calculating its value (which is 42),

rather than letting Fix's default behavior define and compute 41.next as the actual value to challenge, the expect method short circuit it with its argument.

These 2 examples are equivalent:

Fix 41 do
  on :next do
    it { MUST equal 42 }
    it { expect(41.next).to equal 42 }
  end

  it { MUST equal 41 }
  it { expect(41.next).to equal 42 }
end

(irb):9: Success: expected to equal 42. (irb):10: Success: expected to equal 42. (irb):13: Success: expected to equal 41. (irb):14: Success: expected to equal 42.

The block syntax is also allowed:

Fix do
  it { expect { -42.abs }.to equal 42 }
end

(irb):2: Success: expected to equal 42.

Fix do
  it { expect { 4 / 0 }.to raise_exception ZeroDivisionError }
end

(irb):5: Success: divided by 0.

The is_expected method

For convenience, an is_expected method is provided, as an alias of Spectus's MUST:

Fix 41 do
  on :next do
    it { is_expected.to equal 42 }
  end
end

(irb):3: Success: expected to equal 42.

Code Isolation

When executing expectations, side-effects may occur. Because they may or may not be desired, each requirement level has 2 versions:

  • if it is performed with do, a test is performed without isolation;
  • if it is performed with do!, a test is performed in isolation.

Example of test without isolation:

greeting = "Hello, world!"

Fix do
  it "tests without isolation" do
    expect { greeting.gsub!("world", "Alice") }.to equal "Hello, Alice!"
  end
end

greeting # => "Hello, Alice!"

Example of test in isolation:

greeting = "Hello, world!"

Fix do
  it "tests with isolation" do
    expect { greeting.gsub!("world", "Alice") }.to! equal "Hello, Alice!"
  end
end

greeting # => "Hello, world!"

Contact

Versioning

Fix::Expect follows Semantic Versioning 2.0.

License

The gem is available as open source under the terms of the MIT License.


This project is sponsored by:
Sashite