Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Rails 3中重载方法的最佳方法?_Ruby On Rails_Ruby On Rails 3_Unit Testing_Tdd_Overloading - Fatal编程技术网

Ruby on rails 在Rails 3中重载方法的最佳方法?

Ruby on rails 在Rails 3中重载方法的最佳方法?,ruby-on-rails,ruby-on-rails-3,unit-testing,tdd,overloading,Ruby On Rails,Ruby On Rails 3,Unit Testing,Tdd,Overloading,我正在使用默认的Rails测试 在一个测试中,我重载Date.today方法: class Date def self.today Date.new(2011,7,19) end end 这对于本文件中的测试非常有效,但会转移到其他测试并导致它们失败。如何将此代码的效果限制在单个文件中 我想这可能不是最好的测试方法。有没有你推荐的循序渐进的教程 谢谢 Rails 3.07感谢d11wtq提供了上述代码 我是这样做的: $gem安装“摩卡” 将gem“mocha”添加到组中:在

我正在使用默认的Rails测试

在一个测试中,我重载Date.today方法:

class Date
  def  self.today
    Date.new(2011,7,19)
  end
end
这对于本文件中的测试非常有效,但会转移到其他测试并导致它们失败。如何将此代码的效果限制在单个文件中

我想这可能不是最好的测试方法。有没有你推荐的循序渐进的教程

谢谢


Rails 3.07

感谢d11wtq提供了上述代码

我是这样做的:

$gem安装“摩卡” 将gem“mocha”添加到组中:在gem文件中进行测试,请参见下文 $bundle安装 在model_test.rb文件中,在require“test_helper”之后添加了require“mocha” 在model_test.rb中的类ModelTest中添加了以下3行: 我发现这篇文章是对摩卡咖啡的有益介绍:

编辑:更多信息:

我发现您需要添加以下内容,以便在每次测试后删除存根。我把它放在安装方法之后:

teardown do Date.unstub(:today) end 而且,我认为您还需要将以下gem添加到Gemfile中的:测试组:
gem'testunit'、'1.2.3'

您可能需要一个模拟对象。搜索Ruby mock object gems,有几个可供选择。另外,如果这只是日期和时间,请尝试Timecop,但我会警告您,它与DST有问题,可能会破坏您的测试。您如何Mocha来重载日期对象?您如何防止覆盖转移到其他测试?代码在哪里?在测试文件中的测试类之前?在测试助手文件中?有关示例,请参阅。预计日期:2011年7月19日。你不需要重置任何东西。。。测试完成后,它将连接到单元测试框架中进行重置。谢谢,它使用存根而不是预期工作。谢谢您花时间记录您的最终解决方案。各位用户会很感激你们抽出时间,我很高兴投票。 teardown do Date.unstub(:today) end