草庐IT

unit-testing

全部标签

ruby-on-rails - 获取当前时间的单元测试代码

为获取当前时间的代码编写单元测试的最佳方法是什么?例如,某些对象可能仅在工作日创建,其他对象在检查执行某些操作的权限时会考虑当前时间等。我想我应该模拟Date.today和Time.now。这是正确的做法吗?更新:两种解决方案(a)Time.is和(b)Time.stubs(:now).returns(t)都有效。(a)是非常好的方法,但(b)解决方案将与其他测试代码更加一致。在此question作者要求一个通用的解决方案。对于Ruby,在我的选项中,上述两个解决方案是simpler因此比提取获取当前日期/时间的代码更好。顺便说一句,我建议使用Chronic获得所需的时间,例如requ

ruby - 如何在 ruby​​ 模块中包含单元测试?

我正在尝试将模块的单元测试包含在与模块本身相同的源文件中,遵循Perlmodulino模型。#!/usr/bin/envrubyrequire'test/unit'moduleModulinodefmodulino_functionreturn0endendclassModulinoTest现在,我可以运行执行此源文件的单元测试。但是,当我从另一个脚本需要/加载它们时,它们也会运行。如何避免这种情况?是否有更惯用的方法来使用Ruby实现此目的,除非不鼓励这种做法? 最佳答案 就我个人而言,我从未听说有人试图在Ruby中这样做。这绝对

ruby-on-rails - 如何扩展 Ruby Test::Unit 断言以包含 assert_false?

显然在Test::Unit中没有assert_false。您将如何通过扩展断言并添加文件config/initializers/assertions_helper.rb来添加它?这是最好的方法吗?我不想修改test/unit/assertions.rb。顺便说一句,我不认为这是多余的。我使用的是assert_equalfalse,something_to_evaluate。这种方法的问题是很容易意外使用assertfalse,something_to_evaluate。这将始终失败,不会引发错误或警告,并且会在测试中引入错误。 最佳答案

ruby-on-rails - 我如何在 FactoryGirl 中为循环关联创建工厂?

我在尝试为我在项目中定义的某些对象和关联创建工厂时遇到了问题。我有一种循环关联,其中一个对象与另外两个随后连接在一起的对象关联。+--------------++-------------+|||||TestCase+--------->|TestDataGrid|||||+------+-------++------+------+||||||vv+--------------++--------------+|||||||||TestVariable||TestDataSet|||||+------+-------++------+-------+|||||||||+-------

ruby-on-rails - 脚本/服务器 custom_require.rb :36:in `require' : cannot load such file -- test/unit/error (LoadError)

我有一个基于1.8.7构建的应用程序,我正尝试在1.9.3的系统上启动它当我运行脚本/服务器时,我得到:/usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in`require':cannotloadsuchfile--test/unit/error(LoadError)from/usr/local/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in`require'我的服务器脚本如下所示:#!/usr/bin/envrubyrequireFile.expand_path('../.

ruby - 使用 Ruby 测试单元在一个脚本中并行运行多个测试

我在一个ruby​​脚本中有4个测试,我使用命令运行它们rubytest.rb输出看起来像LoadedsuitetestStarted....Finishedin50.326546seconds.4tests,5assertions,0failures,0errors,0pendings,0omissions,0notifications100%passed我想要实现的是,并行运行所有4个测试,而不是按顺序运行。大约4个线程,每个线程运行一个测试,有效地将执行时间减少到4个测试中最慢的一个+并行执行的时间很短。我遇到了this,但这似乎并行运行多个ruby​​测试文件-假设我有test

ruby-on-rails - 如何编写 Rails 4 测试以使用 omniauth-google-oauth2 gem 创建 session ?

我正在尝试为使用omniauth-google-oauth2gem创建session编写测试。我是否需要将env["omniauth.auth"]变量与post:create一起传递?也许当我试图这样做时,我做错了。我得到的错误如下所示...Rake测试错误1)Error:SessionsControllerTest#test_should_get_create:NoMethodError:undefinedmethod`provider'fornil:NilClassapp/models/user.rb:6:in`from_omniauth'app/controllers/sessi

Ruby:Minitest、测试单元和实例变量

(已在https://www.ruby-forum.com/topic/6876320发布,但在这里交叉发布,因为到目前为止我还没有收到回复)。关于在Minitest和/或Test::Unit中并行化测试的问题(即正确使用parallelize_me!):假设我有一些辅助方法,几个测试都需要这些方法。根据我的理解,我不能用这种方法做这样的事情(简化示例):defprep(m,n)@pid=m@state=nenddefprocessif@stat>5&&@pid!=0...else...endend我想我不能在Minitest和测试单元中这样做,因为如果我从我的几个测试函数调用准备和处

ruby - 为什么我的 rspec 测试在 Ruby 1.9.2 中比在 1.8.7 中运行得慢?

我正在使用spork测试Sinatra应用程序,使用Ruby1.9.2,测试运行时间约为3.5秒,但在Ruby1.8.7中,平均运行时间为1.2秒。我确实尝试过Ruby1.9.3甚至JRuby,但它们在我使用的gems上有一些错误。有没有办法将Ruby1.9.2的rspec性能提高到1.8.7的水平?我的gem文件:source:rubygemsgem'sinatra','1.3.1'gem'thin','1.3.1'gem'haml','3.1.4'gem'datamapper','1.2.0'gem'dm-postgres-adapter','1.2.0'gem'carrierwa

ruby-on-rails - rspec rails 测试 : how can I force ActiveJob job's to run inline for certain tests?

我希望我的后台作业能够内联运行某些标记测试。我可以通过用perform_enqueueddo包装测试来做到这一点,但我希望能够用元数据标记它们,如果可能的话,它会自动发生。我试过以下方法:it"doeseverythinginthejobtoo",perform_enqueued:truedoendconfig.around(:each)do|example|ifexample.metadata[:perform_enqueued]perform_enqueued_jobsdoexample.runendendend但它会导致错误:undefinedmethod`perform_enq