Index: test/unit/mock_test.rb
===================================================================
--- test/unit/mock_test.rb	(revision 135)
+++ test/unit/mock_test.rb	(working copy)
@@ -13,8 +13,16 @@
    assert_nothing_raised(ExpectationError) do
      assert_equal 1, mock.method1
    end
-  end 
+  end
 
+  def test_should_set_single_expectation_with_terse_syntax
+    mock = Mock.new
+    mock.expects.method1.returns(1)
+    assert_nothing_raised(ExpectationError) do
+      assert_equal 1, mock.method1
+    end
+  end
+
   def test_should_build_and_store_expectations
    mock = Mock.new
    expectation = mock.expects(:method1)
@@ -92,10 +100,17 @@
   
   def test_should_pass_backtrace_into_expectation
     mock = Mock.new
-    backtrace = Object.new
+    backtrace = []
     expectation = mock.expects(:method1, backtrace)
     assert_equal backtrace, expectation.backtrace
   end
+
+  def test_should_pass_backtrace_into_expectation_with_terse_syntax
+    mock = Mock.new
+    backtrace = []
+    expectation = mock.expects(backtrace).method1
+    assert_equal backtrace, expectation.backtrace
+  end
   
   def test_should_pass_backtrace_into_stub
     mock = Mock.new
@@ -103,6 +118,13 @@
     stub = mock.stubs(:method1, backtrace)
     assert_equal backtrace, stub.backtrace
   end
+
+  def test_should_pass_backtrace_into_stub_with_terse_syntax
+    mock = Mock.new
+    backtrace = []
+    stub = mock.stubs(backtrace).method1
+    assert_equal backtrace, stub.backtrace
+  end
   
   def test_should_create_and_add_stubs
     mock = Mock.new
@@ -110,6 +132,13 @@
     stub2 = mock.stubs(:method2)
     assert_equal [stub1, stub2].to_set, mock.expectations.to_set
   end
+
+  def test_should_create_and_add_stubs_with_terse_syntax
+    mock = Mock.new
+    stub1 = mock.stubs.method1
+    stub2 = mock.stubs.method2
+    assert_equal [stub1, stub2].to_set, mock.expectations.to_set
+  end
   
   def test_should_find_matching_expectation
     mock = Mock.new
@@ -117,6 +146,13 @@
     expectation2 = mock.expects(:my_method).with(:argument3, :argument4)
     assert_same expectation2, mock.matching_expectation(:my_method, :argument3, :argument4)
   end
+
+  def test_should_find_matching_expectation_with_terse_syntax
+    mock = Mock.new
+    expectation1 = mock.expects.my_method(:argument1, :argument2)
+    expectation2 = mock.expects.my_method(:argument3, :argument4)
+    assert_same expectation2, mock.matching_expectation(:my_method, :argument3, :argument4)
+  end
   
   def test_should_find_most_recent_matching_expectation
     mock = Mock.new
@@ -124,6 +160,13 @@
     expectation2 = mock.expects(:my_method).with(:argument1, :argument2)
     assert_same expectation2, mock.matching_expectation(:my_method, :argument1, :argument2)
   end
+
+  def test_should_find_most_recent_matching_expectation_with_terse_syntax
+    mock = Mock.new
+    expectation1 = mock.expects.my_method(:argument1, :argument2)
+    expectation2 = mock.expects.my_method(:argument1, :argument2)
+    assert_same expectation2, mock.matching_expectation(:my_method, :argument1, :argument2)
+  end
   
   def test_should_invoke_expectation_and_return_result
     mock = Mock.new
@@ -131,6 +174,13 @@
     result = mock.my_method
     assert_equal :result, result
   end
+
+  def test_should_invoke_expectation_and_return_result_with_terse_syntax
+    mock = Mock.new
+    mock.expects.my_method {:result}
+    result = mock.my_method
+    assert_equal :result, result
+  end
   
   def test_should_not_raise_error_if_stubbing_everything
     mock = Mock.new(stub_everything = true)
@@ -218,6 +268,15 @@
     mock.method1() { |*parameters| yielded_parameters = parameters }
     assert_equal parameters_for_yield, yielded_parameters
   end
+
+  def test_should_yield_supplied_parameters_to_block_with_terse_syntax
+    mock = Mock.new
+    parameters_for_yield = [1, 2, 3]
+    mock.expects.method1.yields(*parameters_for_yield)
+    yielded_parameters = nil
+    mock.method1() { |*parameters| yielded_parameters = parameters }
+    assert_equal parameters_for_yield, yielded_parameters
+  end
   
   def test_should_respond_to_expected_method
     mock = Mock.new
Index: lib/mocha/terse_stub.rb
===================================================================
--- lib/mocha/terse_stub.rb	(revision 0)
+++ lib/mocha/terse_stub.rb	(revision 0)
@@ -0,0 +1,16 @@
+module Mocha # :nodoc:
+  class TerseStub
+    def initialize(mock, backtrace)
+      @mock = mock
+      @backtrace = backtrace
+    end
+
+    def method_missing(method_name, *args, &block)
+      if block
+        @mock.stubs(method_name, @backtrace).with(*args).returns(block)
+      else
+        @mock.stubs(method_name, @backtrace).with(*args)
+      end
+    end
+  end
+end
\ No newline at end of file
Index: lib/mocha/mock.rb
===================================================================
--- lib/mocha/mock.rb	(revision 135)
+++ lib/mocha/mock.rb	(working copy)
@@ -1,3 +1,5 @@
+require 'mocha/terse_mock'
+require 'mocha/terse_stub'
 require 'mocha/expectation'
 require 'mocha/stub'
 require 'mocha/missing_expectation'
@@ -49,7 +51,15 @@
     #   object.expects(:method2).returns(:result2)
     #
     # Aliased by <tt>\_\_expects\_\_</tt>
-    def expects(method_name_or_hash, backtrace = nil)
+    def expects(*args)
+      if args.empty? || args.first.is_a?(Array)
+        return TerseMock.new(self, args.first)
+      else
+        return expects_with_method_name(*args)
+      end
+    end
+
+    def expects_with_method_name(method_name_or_hash, backtrace=nil)
       if method_name_or_hash.is_a?(Hash) then
         method_name_or_hash.each do |method_name, return_value|
           add_expectation(Expectation.new(self, method_name, backtrace).returns(return_value))
@@ -80,7 +90,15 @@
     #   object.stubs(:method2).returns(:result2)
     #
     # Aliased by <tt>\_\_stubs\_\_</tt>
-    def stubs(method_name_or_hash, backtrace = nil)
+    def stubs(*args)
+      if args.empty? || args.first.is_a?(Array)
+        return TerseStub.new(self, args.first)
+      else
+        return stubs_with_method_name(*args)
+      end
+    end
+
+    def stubs_with_method_name(method_name_or_hash, backtrace=nil)
       if method_name_or_hash.is_a?(Hash) then
         method_name_or_hash.each do |method_name, return_value|
           add_expectation(Stub.new(self, method_name, backtrace).returns(return_value))
@@ -88,7 +106,7 @@
       else
         add_expectation(Stub.new(self, method_name_or_hash, backtrace))
       end
-    end
+    end    
     
     # :stopdoc:
 
Index: lib/mocha/terse_mock.rb
===================================================================
--- lib/mocha/terse_mock.rb	(revision 0)
+++ lib/mocha/terse_mock.rb	(revision 0)
@@ -0,0 +1,16 @@
+module Mocha # :nodoc:
+  class TerseMock
+    def initialize(mock, backtrace)
+      @mock = mock
+      @backtrace = backtrace
+    end
+
+    def method_missing(method_name, *args, &block)
+      if block
+        @mock.expects(method_name, @backtrace).with(*args).returns(block)
+      else
+        @mock.expects(method_name, @backtrace).with(*args)
+      end
+    end
+  end
+end
\ No newline at end of file
