[url]http://wiki.github.com/dchelimsky/rspec/configgem-for-rails[/url]
[url]http://swachian.iteye.com/blog/163202[/url]
[url]http://rspec.info/documentation/[/url]
[url]http://hideto.iteye.com/blog/126583[/url]
[url]http://github.com/jimweirich/flexmock/tree/master[/url]
[url]http://flexmock.rubyforge.org/[/url]
require 'flexmock/test_unit'
require 'spec'
Spec::Runner.configure do |config|
config.mock_with :flexmock
end
describe "Using FlexMock with RSpec" do
it "should be able to create a mock" do
m = flexmock(:foo => :bar)
m.foo.should === :bar
end
end
require 'machine'
describe Machine do
before :each do
@machine = Machine.new
end
it "should initially have a state of :initial" do
@machine.state.should == :initial
end
end
describe Account do
context "transfering money" do
it "deposits transfer amount to the other account" do
source = Account.new(50, :USD)
target = mock('target account')
target.should_receive(:deposit).with(Money.new(5, :USD))
source.transfer(5, :USD).to(target)
end
it "reduces its balance by the transfer amount" do
source = Account.new(50, :USD)
target = stub('target account')
source.transfer(5, :USD).to(target)
source.balance.should == Money.new(45, :USD)
end
end
end
$ spec spec/account_spec.rb --format nested
Account
transfering money
deposits transfer amount to the other account
reduces its balance by the transfer amount
Scenario: stub in before
Given the following spec:
"""
describe "a stub in before" do
before(:each) do
@messenger = mock('messenger').as_null_object
end
it "a" do
@messenger.should_receive(:foo).with('first')
@messenger.foo('second')
@messenger.foo('third')
end
end
"""
When I run it with the spec command --format nested
Then the stdout should match "expected :foo with (\"first\") but received it with ([\"second\"], [\"third\"])"