Fix
Project goals
- Separate specifications and examples.
- Make specifications documents without logic.
- Provide a rich semantic language.
- Run each test unitarily and quickly.
Installation
Add this line to your application's Gemfile:
gem "fix", ">= 1.0.0.beta8"
And then execute:
bundle
Or install it yourself as:
gem install fix --pre
Example
Given these specifications:
# examples/duck/fix.rb
require "fix"
Fix :Duck do
it SHOULD be_an_instance_of :Duck
on :swims do
it MUST be_an_instance_of :String
it MUST eql "Swoosh..."
end
on :speaks do
it MUST raise_exception NoMethodError
end
on :sings do
it MAY eql "♪... ♫..."
end
end
When we load this Duck
application:
# examples/duck/app.rb
class Duck
def walks
"Klop klop!"
end
def swims
"Swoosh..."
end
def quacks
puts "Quaaaaaack!"
end
end
And we run this test:
# examples/duck/test.rb
require_relative "app"
require_relative "fix"
Fix[:Duck].test { Duck.new }
ruby examples/duck/test.rb
We should see this output:
(irb):3 Success: expected #<Duck:0x00007fb2fa208708> to be an instance of Duck.
(irb):7 Success: expected to eq "Swoosh...".
(irb):15 NoMethodError: undefined method `sings' for #<Duck:0x00007fb2fd8371d0>.
(irb):6 Success: expected "Swoosh..." to be an instance of String.
(irb):11 Success: undefined method `speaks' for #<Duck:0x00007fb2fcc79258>.
Contact
- Home page: https://fixrb.dev/
- Source code: https://github.com/fixrb/fix
- API Doc: https://rubydoc.info/gems/fix
- Twitter: https://twitter.com/fix_rb
Versioning
Fix 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 Sashité: