ActiveSupport :: TestCase不会运行DB命令吗?

时间:2018-02-20 20:44:38

标签: ruby-on-rails ruby testing

我有3个问题:

  1. Rails附带的默认测试库是什么?我实际上无法看到它叫什么...... MiniTest? TestUnit?

  2. 如何使用每个TestCase 运行一些代码来设置所有测试。似乎setup do在每次测试之前运行,但我想设置整个文件。

  3. 我的下面示例如何工作(在每次测试之前,它不会清除并重新创建种子数据)

  4. 代码:

    require 'test_helper'
    
    # negative numbers
    # 3+ line item journal entries
    
    class LedgerTest < ActiveSupport::TestCase
      setup do
        ActiveRecord::Base.subclasses.each(&:delete_all)
    
        AccountType.create!(code: 101, name: 'Cash',                     category: :asset,     normal_balance: :debit)
        AccountType.create!(code: 102, name: 'Equipment',                category: :asset,     normal_balance: :debit)
        AccountType.create!(code: 103, name: 'Accumulated Depreciation', category: :asset,     normal_balance: :credit, contra: true)
      end
    
      test "test 1 here" do
      end
    
      test "test 2 here" do
      end
    end
    

1 个答案:

答案 0 :(得分:2)

我认为你应该把它分成3个帖子,因为它更容易。

1 ActiveSupport :: TestCase框架

ActiveSupport::TestCase延伸Minitest::Test

2在文件

中的所有示例之前设置

据我所知,所有这些方法都是解决方法。这是不鼓励的,默认情况下不通过一个漂亮的API支持。    快速搜索出现了这个:

setup_executed = false
setup do
  unless setup_executed
    #code goes here
    setup_executed = true
  end
end

3安装程序无法正常工作

在开发和测试环境中,默认情况下,类是懒惰自动加载的,因为它们是必需的。除非在运行ActiveRecord::Base.subclasses之前在代码中的某处引用类,否则ruby将不知道它存在,因为它从未加载过。