标签: minitest

Rails assert_equal并不总是与DateTimes一起使用

使用时,我的功能测试中出现错误assert_equal:

  1) [31mFailure[0m:
test_should_allow_dealer_to_extend_offer:21
<Thu, 14 Apr 2011 23:59:59 PDT -07:00> expected but was
<Thu, 14 Apr 2011 23:59:59 PDT -07:00>.
Run Code Online (Sandbox Code Playgroud)

请注意,两者显示相同的时间和时区.我检查了它们是同一类类型(ActiveSupport :: TimeWithZone).那他们为什么不平等呢?

它是数据库中的标准DateTime字段,我认为它只存储到第二个右边?

我可以通过将它们转换为整数或使用assert_in_delta1分钟的范围来通过它.但只是想知道.

顺便说一下这是Rails 2.3.8和MySQL.

testing ruby-on-rails minitest

7
推荐指数
1
解决办法
2289
查看次数

你如何使用Minitest,Capybara,Selenium进行javascript测试?

有很多关于如何使用Capybara/Selenium/Rspec执行javascript测试的示例,您可以在其中编写如下测试:

it "does something", :js => true do
  ...
end
Run Code Online (Sandbox Code Playgroud)

但是,对于minitest,您无法传递第二个参数来指示selenium执行测试.

有没有人对如何做到这一点有任何想法?

selenium ruby-on-rails minitest capybara ruby-on-rails-3

7
推荐指数
2
解决办法
5009
查看次数

从RSpec迁移到Minitest :: Spec?

是否有从RSpec 2迁移到的策略或一系列步骤MiniTest::Spec?我想看看为一个大型项目做这个,但我不知道从哪里开始.

rspec minitest

7
推荐指数
1
解决办法
2687
查看次数

如何有效地强制Minitest按顺序运行我的测试?

我知道.这是不鼓励的.由于我不会进入的原因,我需要按照它们编写的顺序运行我的测试.根据文档,如果我的测试类(我们称之为TestClass)扩展Minitest :: Unit :: TestCase,那么我应该能够调用公共方法i_suck_and_my_tests_are_order_dependent!(Gee - 你认为创建Minitest的人有意见吗?在那一个?).此外,还可以选择调用被调用的方法test_order并指定:alpha覆盖其默认行为:random.这些都不适合我.

这是一个例子:

class TestClass < Minitest::Unit::TestCase

  #override random test run ordering
  i_suck_and_my_tests_are_order_dependent!

  def setup
    ...setup code
  end

  def teardown
    ...teardown code
  end

  def test_1
    test_1 code....
    assert(stuff to assert here, etc...)
    puts 'test_1'
  end

  def test_2
    test_2_code
    assert(stuff to assert here, etc...)
    puts 'test_2'
  end

end
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我得到:

undefined method `i_suck_and_my_tests_are_order_dependent!' for TestClass:Class (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

如果我用i_suck顶部的方法替换方法调用a la:

def test_order
  :alpha
end
Run Code Online (Sandbox Code Playgroud)

我的测试运行,但我可以从puts每个方法告诉我每次运行测试时事物仍以随机顺序运行.

有谁知道我做错了什么?谢谢.

ruby minitest

7
推荐指数
3
解决办法
4268
查看次数

MiniTest - 仅重新运行失败的测试

是否可以通过rake任务让minitest只运行失败的测试?

无法在互联网上找到任何关于这个...用rspec或黄瓜它工作..这里有可能吗?

ruby testing minitest ruby-on-rails-3

7
推荐指数
1
解决办法
1126
查看次数

使用Minitest测试助手方法

我想使用Minitest(minitest-rails)来测试一个辅助方法- 但是辅助方法依赖于current_user一个可用于控制器和视图的Devise辅助方法.

应用程序/佣工/ application_helper.rb

def user_is_admin?                           # want to test
  current_user && current_user.admin?
end
Run Code Online (Sandbox Code Playgroud)

测试/助理/ application_helper_test.rb

require 'test_helper'

class ApplicationHelperTest < ActionView::TestCase
  test 'user is admin method' do
    assert user_is_admin?                # but current_user is undefined
  end
end
Run Code Online (Sandbox Code Playgroud)

请注意,我能够测试不依赖的其他帮助方法current_user.

minitest devise ruby-on-rails-4

7
推荐指数
1
解决办法
4124
查看次数

无法让测试单元启动在ruby 1.9.2中工作

我使用Ruby 1.9.2(ruby -v产量:ruby 1.9.2p290(2011-07-09修订版32553)[x86_64-linux]),我试图让它工作:

require 'test/unit'

class TestStartup < Test::Unit::TestCase
  def self.startup
    puts "startup"
  end
  def test1
    puts "in test1"
  end
end 
Run Code Online (Sandbox Code Playgroud)

当我跑的时候,我明白了

Loaded suite test_startup
Started
in test1
.
Finished in 0.000395 seconds. 


1 tests, 0 assertions, 0 failures, 0 errors, 0 skips
Run Code Online (Sandbox Code Playgroud)

我很难找到关于这个功能的文档,除了SO上的零散帖子等.

是的,我想使用此功能而不是设置.

TIA

ruby testunit minitest

6
推荐指数
1
解决办法
776
查看次数

为什么在使用选项运行rails generate时,minitest抛出OptionParse :: InvalidOption?

每当Rails生成器运行一个或多个选项时,最薄的提升OptionParse::InvalidOption.

我使用的是Rails 3.1,Ruby 1.9.2-p290和Mintest 2.10.0.

generate命令实际上将运行并处理传递的选项,但Minitest会在最后引发异常和堆栈跟踪:

rails generate model x --no-migration -s -p

  invoke  active_record     
  identical    app/models/x.rb 
  invoke test_unit 
  identical      test/unit/x_test.rb 
  identical     test/fixtures/xs.yml

  /Users/max/.rvm/gems/ruby-1.9.2-p290/gems/minitest-2.10.0/lib/minitest/unit.rb:900:in 'block in process_args': invalid option: --no-migration (OptionParser::InvalidOption)       
  from /Users/max/.rvm/gems/ruby-1.9.2-p290/gems/minitest-2.10.0/lib/minitest/unit.rb:879:in 'new'
  from /Users/max/.rvm/gems/ruby-1.9.2-p290/gems/minitest-2.10.0/lib/minitest/unit.rb:879:in 'process_args'
  from /Users/max/.rvm/gems/ruby-1.9.2-p290/gems/minitest-2.10.0/lib/minitest/unit.rb:929:in '_run'
  from /Users/max/.rvm/gems/ruby-1.9.2-p290/gems/minitest-2.10.0/lib/minitest/unit.rb:922:in 'run'  
  from /Users/max/.rvm/gems/ruby-1.9.2-p290/gems/minitest-2.10.0/lib/minitest/unit.rb:690:in 'block in autorun'
Run Code Online (Sandbox Code Playgroud)

还有其他人遇到过这个吗?

ruby-on-rails minitest rvm

6
推荐指数
1
解决办法
418
查看次数

Minitest规格自定义匹配器

我的测试中有一条线:

page.has_reply?("my reply").must_equal true
Run Code Online (Sandbox Code Playgroud)

并使其更具可读性我想使用自定义匹配器:

page.must_have_reply "my reply"
Run Code Online (Sandbox Code Playgroud)

基于https://github.com/zenspider/minitest-matchers的文档,我希望我需要编写一个类似于以下内容的匹配器:

def have_reply(text)
  subject.has_css?('.comment_body', :text => text)
end
MiniTest::Unit::TestCase.register_matcher :have_reply, :have_reply
Run Code Online (Sandbox Code Playgroud)

问题是我无法看到如何获得对主题的引用(即页面对象).文档说"注释主题必须是断言中的第一个参数",但这并没有真正帮助.

ruby minitest

6
推荐指数
1
解决办法
1411
查看次数

是否仍然建议使用Minitest测试Rails 4中的路由?

在Rails 3中,当在MiniTest中编写功能测试时,我养成了测试路由与测试控制器操作分开的习惯.我从Rails指南测试中得到了这个想法- 第9节:测试路径.但是,在将我的应用程序升级到Rails 4之后,我注意到如果我没有为get|patch|post|delete方法提供一组适当的参数,那么控制器动作测试本身已经开始涉及未知路由.

例如,给定路线:

# config/routes.rb
namespace "api" do
  namespace "v2", defaults: { format: :json } do
    resources :users do
      resources :posts do
        resources :comments
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

和功能测试:

# test/controllers/api/v2/comments_controller_test.rb
describe Api::V2::CommentsController
  it "does something" do
    get :index
  end
end
Run Code Online (Sandbox Code Playgroud)

在Rails 3中,上述方法可行.但在Rails 4中,我收到了URL生成错误:

ActionController :: UrlGenerationError:没有路由匹配{:action =>"index",:controller =>"api/v2/comments"}

从这里我可以推断,get当试图找到控制器和动作时,帮助器根本无法匹配路由文件中的路由.很公平.我可以通过更改get调用来解决这个问题,以包含满足嵌套路由所需的参数,如下所示:

# test/controllers/api/v2/comments_controller_test.rb
describe Api::V2::CommentsController
  it "does something" do
    get :index, { user_id: "1", post_id: "1" }
  end
end …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails minitest ruby-on-rails-4

6
推荐指数
1
解决办法
1333
查看次数