Active Support

包含了:Test Case、Assertions、Declarative、Isolation、Setup 和 Teardown 相关类方法、Time Helpers、Log Subscriber Test Helper 等部分。

Test Case

assert_nothing_raised

# 为了向之前的 test/unit 兼容
alias :assert_raise :assert_raises
alias :assert_not_empty :refute_empty
alias :assert_not_equal :refute_equal
alias :assert_not_in_delta :refute_in_delta
alias :assert_not_in_epsilon :refute_in_epsilon
alias :assert_not_includes :refute_includes
alias :assert_not_instance_of :refute_instance_of
alias :assert_not_kind_of :refute_kind_of
alias :assert_no_match :refute_match
alias :assert_not_nil :refute_nil
alias :assert_not_operator :refute_operator
alias :assert_not_predicate :refute_predicate
alias :assert_not_respond_to :refute_respond_to
alias :assert_not_same :refute_same
test_order
test_order=

test_order 支持:

ActiveSupport::TestCase.test_order # => :sorted

:random   # 随机
:parallel # 并行
:sorted   # 按字母顺序
:alpha    # 按字母顺序

Assertions

assert_difference
assert_no_difference

assert_not

Declarative

test

Isolation

类方法:

forking_env?

实例方法:

run

Forking:

run_in_isolation

Subprocess:

run_in_isolation

Setup & Teardown 相关类方法

setup
teardown

使用举例:

class ExampleTest < ActiveSupport::TestCase
  setup do
    # ...
  end

  teardown do
    # ...
  end
end

文档没写,但还有:

before_setup
after_teardown

Time Helpers

travel
travel_back
travel_to

Log Subscriber - Test Helper

set_logger

setup
teardown

wait

使用举例:

class SyncLogSubscriberTest < ActiveSupport::TestCase
  include ActiveSupport::LogSubscriber::TestHelper

  def setup
    ActiveRecord::LogSubscriber.attach_to(:active_record)
  end

  def test_basic_query_logging
    Developer.all.to_a
    wait # <-- 这个
    assert_equal 1, @logger.logged(:debug).size
    assert_match(/Developer Load/, @logger.logged(:debug).last)
    assert_match(/SELECT \* FROM "developers"/, @logger.logged(:debug).last)
  end
end

File Fixtures

file_fixture

Constant Lookup

determine_constant_from_test_name

Deprecation

assert_deprecated
assert_not_deprecated

最后更新于