MacSpec¶ ↑
MacSpec is a (yet) feature minimal RSpec clone that is specifically built to work with MacRuby. It is built ontop of MiniTest that ships with MacRuby and works out of the box with the MacRuby App Template for Xcode. All you have to do is to replace two lines of code and start writing your tests. No special command for running tests required. Just set your active Target to Test and hit Cmd-B.
MacSpec ships with a testing framework similar to RSpec’s.
The matchy matcher system is built in. (-> github.com/jm/matchy)
Even a mocking framework is built in.
Install¶ ↑
$sudo macgem install MacSpec
Use¶ ↑
For Starters:
Create a brandnew MacRuby Application with the Xcode template that ships with MacRuby. (Btw Have you installed MacRuby-0.5 already? www.macruby.org/downloads.html )
Open the stub_test.rb file that is located inside the Tests group and replace the content with:
require "rubygems" require "MacSpec" describe "MacSpec TestCase" do before do # This gets executed before each test. (Like setup) # Instance variables that are declared # inside this block will be handed down to all # tests. @obj = Object.new end after do # you guess it! end it "should work!" do # this is the body of a test @obj.should_receive(:hello).with("object").and_return("Hello MacSpec") @obj.hello("object").should == "Hello MacSpec" end describe "Nested TestCase" do it "has access to the stuff that has been defined in the outer before blocks" do @obj.stub!(:some_method) lambda {@obj.some_method}.should_not raise_error end end end
Now set the active target to ‘Unit Tests’ and hit Cmd-B.
Philosophy¶ ↑
The highest priority feature will always be MacRuby compatibility. We will expand MacSpec’s feature set towards RSpec’s feature set step by step.
Features¶ ↑
Lots of matchers¶ ↑
A testing framework ¶ ↑
With nested describe blocks, chained setup and teardown, fit and xit, shared_example_groups
A mock framework¶ ↑
With mock objects, method stubs and method expectations (aka partials)
Copyright¶ ↑
Copyright © 2010 Matthias Hennemeyer. See LICENSE for details. matchy is © 2008 Jeremy McAnally