`

Rspec 和 flexmock

阅读更多
http://wiki.github.com/dchelimsky/rspec/configgem-for-rails
http://swachian.iteye.com/blog/163202
http://rspec.info/documentation/
http://hideto.iteye.com/blog/126583
http://github.com/jimweirich/flexmock/tree/master
http://flexmock.rubyforge.org/
  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\"])"


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics