当前位置: 首页 > 工具软件 > FlexMock > 使用案例 >

Rspec 和 flexmock

石正卿
2023-12-01
[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\"])"
 类似资料: