【发布时间】:2015-11-26 07:39:02
【问题描述】:
要使用 mocha gem 模拟 Time.now,我使用以下 oneliner。
require 'minitest/autorun'
require 'mocha/mini_test'
require 'time'
class TimeMockTest < Minitest::Test
def test_time_mock
# Mocking Time.now in one line
Time.expects(:now).returns(Time.parse('20:12'))
Time.now
end
end
但运行此代码会返回以下错误,因为 Time.parse() 使用了模拟的 Time.now() 方法。
NoMethodError: undefined method `year' for nil:NilClass
C:/Ruby22-x64/lib/ruby/2.2.0/time.rb:255:in `make_time'
C:/Ruby22-x64/lib/ruby/2.2.0/time.rb:364:in `parse'
time_mock.rb:8:in `test_time_mock'
你如何用mocha模拟Time.now?
【问题讨论】:
标签: ruby unit-testing time mocking ruby-mocha