【问题标题】:Mock Time.now with mocha用摩卡模拟 Time.now
【发布时间】: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


    【解决方案1】:

    您应该检查https://github.com/travisjeffery/timecop。 它将帮助您在测试中处理时间。

    【讨论】:

      猜你喜欢
      • 2016-08-25
      • 2020-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多