标签: minitest

minitest_plugin.rb:9获取错误的参数数量

~/Sites/sample_app$ rails test
Running via Spring preloader in process 24338
Run options: --seed 58780

Running:

..

Finished in 0.292172s, 6.8453 runs/s, 6.8453 assertions/s.
/var/lib/gems/2.3.0/gems/railties-5.1.0/lib/rails/test_unit/minitest_plugin.rb:9:in `aggregated_results': wrong number of arguments (given 1, expected 0) (ArgumentError)
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我会收到这个错误.我似乎找不到任何有这个特定错误的人.我正在按照教程https://www.railstutorial.org/book/static_pages.此错误遵循rails test命令.如果有帮助,运行Ubuntu和rails 5.1.我没有传递任何参数,所以我不明白为什么我会收到这个错误.

我的测试文件如下:

    require 'test_helper'

    class StaticPagesControllerTest < ActionDispatch::IntegrationTest

    test "should get home" do
      get static_pages_home_url
      assert_response :success
    end

    test "should get help" do
      get static_pages_help_url
      assert_response :success
    end
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails minitest argument-error

10
推荐指数
2
解决办法
2020
查看次数

如何使minitest在失败时停止执行?

我使用Minitest作为我的功能测试的跑步者,使用Selenium作为运行浏览器的驱动程序.每个测试都建模为MiniTest :: Unit :: TestCase.

Minitest报告完成执行所有测试后的执行摘要.遇到的异常也会在执行结束时打印出来.当发现执行上下文丢失时,我发现很难调试意外失败.我遇到的例外不是确定性的.

有没有办法让Minitest运行器停止执行异常或断言失败的测试?

我使用的是minitest(2.11.2)和ruby 1.9.2p290(2011-07-09)[i386-mingw32]

ruby minitest selenium-webdriver

9
推荐指数
1
解决办法
2603
查看次数

如何在Factory Girl或Minifacture中使用随机唯一数据制作Ruby测试工厂?

我正在使用典型工厂测试典型的Rails模型:

# My model uses a 3-letter uppercase airport code,
# such as "ATL" for Atlanta, "BOS" for Boston, etc.

class Airport < ActiveRecord::Base
  validates :code, uniqueness: true

Factory.define :airport do |f|
  f.code { random_airport_code }  # Get a 3-letter uppercase code
Run Code Online (Sandbox Code Playgroud)

我正在添加更多测试并开始在机场代码中看到碰撞:例如工厂创建一个代码为"XYZ"的机场,然后工厂的后续调用尝试创建具有相同代码的机场.

序列是解决这个问题的一种方法.例如,使用Factory Girl序列,有序列表或预先计算的枚举,一些类似的方式来维护下一个可用代码的状态.

我的问题是:什么是非序列方法来解决这个问题?我想使用随机数据,而不是序列.

我正在尝试的一些想法因为它们是务实的 - 对这些的任何见解都非常感激.

使用乐观锁定的示例构思

while 
  airport = Factory.build :airport
  airport.save && return airport
end
Run Code Online (Sandbox Code Playgroud)

优点:实践快速,因为碰撞很少见; 当地的州.

缺点:笨拙的语法; 非本地工厂; 由于碰撞以外的原因,保存可能会失败.

使用事务的示例构思

Airport.transaction 
  while
    x = random_airport_code
    if Airport.exists?(code: x)
      next
    else
      Factory :airport, …
Run Code Online (Sandbox Code Playgroud)

ruby rspec ruby-on-rails minitest factory-bot

9
推荐指数
2
解决办法
1707
查看次数

在minitest的模拟上多次调用相同的方法

我正在使用带有Ruby 1.9.3的minitest版本如何测试模拟的多个调用?我需要类似的东西

mockObject.expect.times(2) :method, [return_1 first time, return_2 second time] 
mockObject.verify
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这个目标?

ruby ruby-on-rails mocking minitest

9
推荐指数
2
解决办法
3052
查看次数

有没有人使用Minitest :: Spec进行Rails功能测试?

Minitest的规范库很棒.我已经能够在Rails单元测试中使用它没问题.但是,Rails功能测试继承自ActionController :: TestCase,它在其设置中提供了像@controller这样的实例变量.

有没有人使用Minitest :: Spec lib进行Rails功能测试?

如果没有,我正在考虑创建一个小型库来做到这一点.我对rspec并不太热衷,并且应该开始将它的重点转移到rspec上.拥有一些轻量级的东西并且基于已经提供的工具构建它会很不错.

functional-testing minitest ruby-on-rails-3

8
推荐指数
1
解决办法
2241
查看次数

如何在没有Rake的情况下运行完整的MiniTest套件?

已经看过这个问题了,或多或少反映了我目前运行整个套件的方式.

另外,我设置了以下rake任务:

Rake::TestTask.new do |t|
  t.name = "spec:models"
  t.libs << "test"
  t.pattern = "spec/models/*_spec.rb"
end
Run Code Online (Sandbox Code Playgroud)

但是当我使用time rake spec:models它时,我注意到它在大约2.36秒内完成.如果我在该目录中运行所有单独的测试ruby /path/to/spec.rb(目前所有测试都与ActiveRecord隔离 - 没有持久性,那么超快),他们的累计总用户时间是2.36秒,但我也注意到每个文件占用0.4用户从开始到结束执行的秒数,MiniTest报告的实际"测试"时间要快得多(这样我的整个套件在加载依赖后,应该在不到0.15秒的时间内执行,而不是2.36秒).

示例(对于一个spec文件):

Started

11/11:         100% |======================================| Time: 00:00:00

Finished in 0.02223s
11 tests, 15 assertions, 0 failures, 0 errors, 0 skips
ruby path/to/spec.rb  0.43s user 0.06s system 88% cpu 0.559 total
Run Code Online (Sandbox Code Playgroud)

我怀疑Rake正在每次测试的执行之间重新加载库,这就是额外的时间.无论如何我可以验证这一点,或者在不使用Rake的情况下运行我的整个套件?

顺便说一句,当我之前说"用户时间"时,我指的是通过time在我的ruby命令之前输出的第一个数字来运行单个测试文件,所以time ruby /path/to/spec.rb=ruby path/to/spec.rb 0.43s user 0.06s system 88% cpu 0.559 total

ruby rake ruby-on-rails minitest

8
推荐指数
2
解决办法
2604
查看次数

b/w minitest-rails和minitest-spec-rails有什么区别?

考虑将Minitest用于现有的Rails 3.2.我试图了解minitest-rails和minitest-spec-rails之间的区别.

ruby-on-rails minitest ruby-on-rails-3.2

8
推荐指数
1
解决办法
1428
查看次数

我如何获得RSpec的共享示例,例如Ruby Test :: Unit中的行为?

是否有类似于RSpec for test :: Unit测试中的shared_examples的插件/扩展名?

ruby rspec testunit minitest

8
推荐指数
2
解决办法
1367
查看次数

不能在Rails中使用guard-minitest

我开始MiniTest在我的Rails项目中使用.

当我跑步时spring rake test,测试工作正常.但我无法通过测试guard-minitest.

bundle exec guard
05:03:24 - INFO - Guard::Minitest 2.4.6 is running, with Minitest::Unit 5.9.0!
05:03:24 - INFO - Running: all tests
Run options: -n spec/apis/user_spec.rb --seed 22566

# Running:



Finished in 0.004998s, 0.0000 runs/s, 0.0000 assertions/s.

0 runs, 0 assertions, 0 failures, 0 errors, 0 skips

05:03:25 - INFO - Guard is now watching at '/Users/ironsand/dev/my_project'
Run Code Online (Sandbox Code Playgroud)

Guardfile

guard :minitest, spring: 'spring rake test' do
  watch(%r{^test/models/company_test.rb$})
  watch(%r{^test/(.*)\/?test_(.*)\.rb$})
  watch(%r{^lib/(.*/)?([^/]+)\.rb$})     { |m| "test/#{m[1]}test_#{m[2]}.rb" …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails guard minitest

8
推荐指数
1
解决办法
212
查看次数

Factory Girl将参数传递给trait

我一直在为此而奋斗.我希望能够覆盖特征之上的属性.我一直在阅读文档和一些互联网示例,但我无法让它工作.

这就是我想要做的事情:

test "..." do 
 #overwrite start_time
 middle = create( :basic_instant_instance, start: 1.hours.ago)
end 

FactoryGirl.define do

  factory :instant_instance do

  trait :active_now do 
    #attributes...
    transient do
      start nil
    end  
    #overwrite start_time
    start_time start.present? ? start : Time.now
  end

  factory :basic_instant_instance,          traits: [:active_now] 
end   
Run Code Online (Sandbox Code Playgroud)

我一直在:

ArgumentError:特征未注册:开始

ruby-on-rails minitest factory-bot

8
推荐指数
1
解决办法
5784
查看次数