test/unit/mock_test.rb in bourne-1.0 vs test/unit/mock_test.rb in bourne-1.1.0
- old
+ new
@@ -7,130 +7,130 @@
class MockTest < Test::Unit::TestCase
include Mocha
def test_should_set_single_expectation
- mock = Mock.new
+ mock = build_mock
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
+ mock = build_mock
expectation = mock.expects(:method1)
assert_not_nil expectation
assert_equal [expectation], mock.expectations.to_a
end
def test_should_not_stub_everything_by_default
- mock = Mock.new
+ mock = build_mock
assert_equal false, mock.everything_stubbed
end
-
+
def test_should_stub_everything
- mock = Mock.new
+ mock = build_mock
mock.stub_everything
assert_equal true, mock.everything_stubbed
end
def test_should_be_able_to_extend_mock_object_with_module
- mock = Mock.new
+ mock = build_mock
assert_nothing_raised(ExpectationError) { mock.extend(Module.new) }
end
def test_should_be_equal
- mock = Mock.new
+ mock = build_mock
assert_equal true, mock.eql?(mock)
end
if RUBY_VERSION < '1.9'
OBJECT_METHODS = STANDARD_OBJECT_PUBLIC_INSTANCE_METHODS.reject { |m| m =~ /^__.*__$/ }
else
OBJECT_METHODS = STANDARD_OBJECT_PUBLIC_INSTANCE_METHODS.reject { |m| m =~ /^__.*__$/ || m == :object_id }
end
def test_should_be_able_to_mock_standard_object_methods
- mock = Mock.new
+ mock = build_mock
OBJECT_METHODS.each { |method| mock.__expects__(method.to_sym).returns(method) }
OBJECT_METHODS.each { |method| assert_equal method, mock.__send__(method.to_sym) }
assert mock.__verified__?
end
def test_should_be_able_to_stub_standard_object_methods
- mock = Mock.new
+ mock = build_mock
OBJECT_METHODS.each { |method| mock.__stubs__(method.to_sym).returns(method) }
OBJECT_METHODS.each { |method| assert_equal method, mock.__send__(method.to_sym) }
end
def test_should_create_and_add_expectations
- mock = Mock.new
+ mock = build_mock
expectation1 = mock.expects(:method1)
expectation2 = mock.expects(:method2)
assert_equal [expectation1, expectation2].to_set, mock.expectations.to_set
end
def test_should_pass_backtrace_into_expectation
- mock = Mock.new
+ mock = build_mock
backtrace = Object.new
expectation = mock.expects(:method1, backtrace)
assert_equal backtrace, expectation.backtrace
end
def test_should_pass_backtrace_into_stub
- mock = Mock.new
+ mock = build_mock
backtrace = Object.new
stub = mock.stubs(:method1, backtrace)
assert_equal backtrace, stub.backtrace
end
def test_should_create_and_add_stubs
- mock = Mock.new
+ mock = build_mock
stub1 = mock.stubs(:method1)
stub2 = mock.stubs(:method2)
assert_equal [stub1, stub2].to_set, mock.expectations.to_set
end
def test_should_invoke_expectation_and_return_result
- mock = Mock.new
+ mock = build_mock
mock.expects(:my_method).returns(:result)
result = mock.my_method
assert_equal :result, result
end
def test_should_not_raise_error_if_stubbing_everything
- mock = Mock.new
+ mock = build_mock
mock.stub_everything
result = nil
assert_nothing_raised(ExpectationError) do
result = mock.unexpected_method
end
assert_nil result
end
def test_should_raise_assertion_error_for_unexpected_method_call
- mock = Mock.new
+ mock = build_mock
error = assert_raise(ExpectationError) do
mock.unexpected_method_called(:my_method, :argument1, :argument2)
end
assert_match(/unexpected invocation/, error.message)
assert_match(/my_method/, error.message)
assert_match(/argument1/, error.message)
assert_match(/argument2/, error.message)
end
def test_should_not_verify_successfully_because_not_all_expectations_have_been_satisfied
- mock = Mock.new
+ mock = build_mock
mock.expects(:method1)
mock.expects(:method2)
mock.method1
assert !mock.__verified__?
end
def test_should_increment_assertion_counter_for_every_verified_expectation
- mock = Mock.new
+ mock = build_mock
mock.expects(:method1)
mock.method1
mock.expects(:method2)
@@ -142,165 +142,170 @@
assert_equal 2, assertion_counter.count
end
def test_should_yield_supplied_parameters_to_block
- mock = Mock.new
+ mock = build_mock
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_set_up_multiple_expectations_with_return_values
- mock = Mock.new
+ mock = build_mock
mock.expects(:method1 => :result1, :method2 => :result2)
assert_equal :result1, mock.method1
assert_equal :result2, mock.method2
end
def test_should_set_up_multiple_stubs_with_return_values
- mock = Mock.new
+ mock = build_mock
mock.stubs(:method1 => :result1, :method2 => :result2)
assert_equal :result1, mock.method1
assert_equal :result2, mock.method2
end
def test_should_keep_returning_specified_value_for_stubs
- mock = Mock.new
+ mock = build_mock
mock.stubs(:method1).returns(1)
assert_equal 1, mock.method1
assert_equal 1, mock.method1
end
def test_should_keep_returning_specified_value_for_expects
- mock = Mock.new
+ mock = build_mock
mock.expects(:method1).times(2).returns(1)
assert_equal 1, mock.method1
assert_equal 1, mock.method1
end
def test_should_match_most_recent_call_to_expects
- mock = Mock.new
+ mock = build_mock
mock.expects(:method1).returns(0)
mock.expects(:method1).returns(1)
assert_equal 1, mock.method1
end
def test_should_match_most_recent_call_to_stubs
- mock = Mock.new
+ mock = build_mock
mock.stubs(:method1).returns(0)
mock.stubs(:method1).returns(1)
assert_equal 1, mock.method1
end
def test_should_match_most_recent_call_to_stubs_or_expects
- mock = Mock.new
+ mock = build_mock
mock.stubs(:method1).returns(0)
mock.expects(:method1).returns(1)
assert_equal 1, mock.method1
end
def test_should_match_most_recent_call_to_expects_or_stubs
- mock = Mock.new
+ mock = build_mock
mock.expects(:method1).returns(0)
mock.stubs(:method1).returns(1)
assert_equal 1, mock.method1
end
def test_should_respond_to_expected_method
- mock = Mock.new
+ mock = build_mock
mock.expects(:method1)
assert_equal true, mock.respond_to?(:method1)
end
def test_should_not_respond_to_unexpected_method
- mock = Mock.new
+ mock = build_mock
assert_equal false, mock.respond_to?(:method1)
end
def test_should_respond_to_methods_which_the_responder_does_responds_to
instance = Class.new do
define_method(:respond_to?) { |symbol| true }
end.new
- mock = Mock.new
+ mock = build_mock
mock.responds_like(instance)
assert_equal true, mock.respond_to?(:invoked_method)
end
def test_should_not_respond_to_methods_which_the_responder_does_not_responds_to
instance = Class.new do
define_method(:respond_to?) { |symbol| false }
end.new
- mock = Mock.new
+ mock = build_mock
mock.responds_like(instance)
assert_equal false, mock.respond_to?(:invoked_method)
end
def test_should_return_itself_to_allow_method_chaining
- mock = Mock.new
+ mock = build_mock
assert_same mock.responds_like(Object.new), mock
end
def test_should_not_raise_no_method_error_if_mock_is_not_restricted_to_respond_like_a_responder
- instance = Class.new do
- define_method(:respond_to?) { true }
- end.new
- mock = Mock.new
+ mock = build_mock
mock.stubs(:invoked_method)
assert_nothing_raised(NoMethodError) { mock.invoked_method }
end
def test_should_not_raise_no_method_error_if_responder_does_respond_to_invoked_method
instance = Class.new do
define_method(:respond_to?) { |symbol| true }
end.new
- mock = Mock.new
+ mock = build_mock
mock.responds_like(instance)
mock.stubs(:invoked_method)
assert_nothing_raised(NoMethodError) { mock.invoked_method }
end
def test_should_raise_no_method_error_if_responder_does_not_respond_to_invoked_method
instance = Class.new do
define_method(:respond_to?) { |symbol| false }
define_method(:mocha_inspect) { 'mocha_inspect' }
end.new
- mock = Mock.new
+ mock = build_mock
mock.responds_like(instance)
mock.stubs(:invoked_method)
assert_raises(NoMethodError) { mock.invoked_method }
end
def test_should_raise_no_method_error_with_message_indicating_that_mock_is_constrained_to_respond_like_responder
instance = Class.new do
define_method(:respond_to?) { |symbol| false }
define_method(:mocha_inspect) { 'mocha_inspect' }
end.new
- mock = Mock.new
+ mock = build_mock
mock.responds_like(instance)
mock.stubs(:invoked_method)
begin
mock.invoked_method
rescue NoMethodError => e
assert_match(/which responds like mocha_inspect/, e.message)
end
end
def test_should_handle_respond_to_with_private_methods_param_without_error
- mock = Mock.new
+ mock = build_mock
assert_nothing_raised{ mock.respond_to?(:object_id, false) }
end
def test_should_respond_to_any_method_if_stubbing_everything
- mock = Mock.new
+ mock = build_mock
mock.stub_everything
assert mock.respond_to?(:abc)
assert mock.respond_to?(:xyz)
end
+ def test_should_remove_expectation_for_unstubbed_method
+ mock = build_mock
+ mock.expects(:method1)
+ mock.unstub(:method1)
+ e = assert_raises(ExpectationError) { mock.method1 }
+ assert_match(/unexpected invocation/, e.message)
+ end
+
class FakeExpectation
attr_reader :args
def invoke(args)
@args = args
@@ -320,10 +325,14 @@
args = [1, 2]
mock = Mock.new(method)
expectation = FakeExpectation.new
mock.expectations.add expectation
mock.send(method, *args)
-
assert_equal args, expectation.args
end
-
+
+ private
+
+ def build_mock
+ Mock.new(nil)
+ end
end