lib/test/unit/given/simple.rb in test_unit-given-0.1.1 vs lib/test/unit/given/simple.rb in test_unit-given-0.9.0

- old
+ new

@@ -92,9 +92,79 @@ # Returns the block that was executed def And(existing_block=nil,&block) Given(existing_block,&block) end + # Public: Continue the previous Given/When/Then in a new block. The reason + # you might do this is if you wanted to use the existing block form of a + # Given/When/Then, but also need to do something custom, and that custom thing + # contradicts or overrides the flow, so an "And" wouldn't read properly. This allows you to + # write your test more fluently. + # + # existing_block - a callable object (e.g. a Proc) that will be called immediately + # by this Then. If nil, &block is expected to be passed + # block - a block given to this call that will be executed immediately + # by this Then. If existing_block is non-nil, this is ignored + # + # Examples + # + # given_block = Given { + # @options = { + # :foo => 'bar', + # :quux => 'baz', + # } + # } + # Given then_block + # And { + # @name = 'Foo' + # } + # But { + # @options[:quux] = 'BAZ' + # } + # + # Returns the block that was executed + def But(existing_block=nil,&block) + Given(existing_block,&block) + end + + # Public: Used to make clear the structure of tests using mocks. + # This returns a no-op, and is intended to be used with a "When" + # to delineate the creation of a mock in a Given, and the + # expectations of a mock in a "Then" + # + # Example: + # + # Given { + # @google = mock() + # } + # When mocks_are_called + # Then { + # @google.expects(:search).with('foo').returns('bar') + # } + # Given { + # @my_search = Search.new(@google) + # } + # When { + # @result = @my_search.find('foo') + # } + # Then { + # assert_equal 'Found bar',@result + # } + # And mocks_shouldve_been_called + def mocks_are_called + lambda {} + end + + # Similar to #mocks_are_called, this is used to make clear what + # you are testing and what the assertions are. Since many Ruby mock + # frameworks do not require an explicit "verify" step, you often have tests + # that have no explicit asserts, the assertions being simply that the mocks were called + # as expected. This step, which is a no-op, allows you to document that you are + # expecting mocks to be called. See the example in #mocks_are_called for usage. + def mocks_shouldve_been_called + lambda {} + end + private def call_block_param_or_block_given(existing_block,&block) if existing_block.nil? block.call