diff options
author | Kasper Timm Hansen <kaspth@gmail.com> | 2015-07-05 14:41:03 +0200 |
---|---|---|
committer | Kasper Timm Hansen <kaspth@gmail.com> | 2015-07-08 21:15:27 +0200 |
commit | 53f64c0fb27349541ded62946d66c429fbef86fa (patch) | |
tree | d6a8869586306e2ed03c06da54ca215063d8c0e6 /activesupport/lib/active_support/testing | |
parent | 798ad25f76bf6c954eb2923adb0452137b8f9925 (diff) | |
download | rails-53f64c0fb27349541ded62946d66c429fbef86fa.tar.gz rails-53f64c0fb27349541ded62946d66c429fbef86fa.tar.bz2 rails-53f64c0fb27349541ded62946d66c429fbef86fa.zip |
Add method call assertions for internal use.
Add `assert_called` and `assert_not_called` to boil down the boilerplate we need to write
to assert methods are called certain number of times.
Diffstat (limited to 'activesupport/lib/active_support/testing')
-rw-r--r-- | activesupport/lib/active_support/testing/method_call_assertions.rb | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/testing/method_call_assertions.rb b/activesupport/lib/active_support/testing/method_call_assertions.rb new file mode 100644 index 0000000000..0d7d62341c --- /dev/null +++ b/activesupport/lib/active_support/testing/method_call_assertions.rb @@ -0,0 +1,30 @@ +module ActiveSupport + module Testing + module MethodCallAssertions # :nodoc: + private + def assert_called(object, method_name, message = nil, times: 1) + times_called = 0 + + object.stub(method_name, -> { times_called += 1 }) { yield } + + error = "Expected #{method_name} to be called #{times} times, " \ + "but was called #{times_called} times" + error = "#{message}.\n#{error}" if message + assert_equal times, times_called, error + end + + def assert_called_with(object, method_name, args = [], returns: nil) + mock = Minitest::Mock.new + mock.expect(:call, returns, args) + + object.stub(method_name, mock) { yield } + + mock.verify + end + + def assert_not_called(object, method_name, message = nil, &block) + assert_called(object, method_name, message, times: 0, &block) + end + end + end +end
\ No newline at end of file |