Ruby on rails ActiveSupport::TestCase赢得';不运行数据库命令?

Ruby on rails ActiveSupport::TestCase赢得';不运行数据库命令?,ruby-on-rails,ruby,testing,Ruby On Rails,Ruby,Testing,我有3个问题: Rails附带的默认测试库是什么?我真的看不出它叫什么。。。小测验?测试单元 如何使某些代码在每个测试用例中运行一次,以设置所有测试。似乎在每次测试之前都会运行setup do,但我想为整个文件进行设置 为什么我下面的示例不起作用(它不会在每次测试之前清除并重新创建种子数据) 代码: 需要“测试助手” #负数 #3+行项目日记账分录 类LedgerTest

我有3个问题:

  • Rails附带的默认测试库是什么?我真的看不出它叫什么。。。小测验?测试单元

  • 如何使某些代码在每个测试用例中运行一次,以设置所有测试。似乎在每次测试之前都会运行
    setup do
    ,但我想为整个文件进行设置

  • 为什么我下面的示例不起作用(它不会在每次测试之前清除并重新创建种子数据)

  • 代码:

    需要“测试助手”
    #负数
    #3+行项目日记账分录
    类LedgerTest
    我认为你应该把这篇文章分成3篇,因为这样比较容易

    1 ActiveSupport::TestCase框架
    ActiveSupport::TestCase
    extends
    Minitest::Test

    2在文件中的所有示例之前设置 据我所知,所有的方法都是权宜之计。默认情况下,nice API不支持这样做。 “快速搜索”会得出以下结论:

    setup_executed = false
    setup do
      unless setup_executed
        #code goes here
        setup_executed = true
      end
    end
    
    3安装程序不工作
    在开发和测试环境中,默认情况下,类是根据需要自动加载的。除非您在运行
    ActiveRecord::Base.subclass
    之前在代码中的某个地方引用了一个类,否则ruby不会知道它的存在,因为它从未被加载过。

    我认为您应该将它分为3篇文章,因为这样比较容易

    1 ActiveSupport::TestCase框架
    ActiveSupport::TestCase
    extends
    Minitest::Test

    2在文件中的所有示例之前设置 据我所知,所有的方法都是权宜之计。默认情况下,nice API不支持这样做。 “快速搜索”会得出以下结论:

    setup_executed = false
    setup do
      unless setup_executed
        #code goes here
        setup_executed = true
      end
    end
    
    3安装程序不工作
    在开发和测试环境中,默认情况下,类是根据需要自动加载的。除非在运行
    ActiveRecord::Base.subclass
    之前在代码中的某个地方引用了一个类,否则ruby不会知道它的存在,因为它从未被加载过。

    hmm我明白了。。实际上,我正在尝试在所有测试之前清除数据库(因此在文件开头一次),然后在每个测试之前清除一个特定的表(因此在每个测试之前)。我应该试着用rspec或其他什么来做这件事吗?推荐的方法是什么?@Tallboy这可能是您正在寻找的,那么
    ActiveSupport::TestCase
    是否会在每次测试之间自动清理数据库?这让我快发疯了,但它似乎已经这么做了?(不需要任何额外的宝石)您似乎缺少“测试夹具”。搜索“Rails测试夹具”将发现您试图在这里重新发明的车轮。嗯,我明白了。。实际上,我正在尝试在所有测试之前清除数据库(因此在文件开头一次),然后在每个测试之前清除一个特定的表(因此在每个测试之前)。我应该试着用rspec或其他什么来做这件事吗?推荐的方法是什么?@Tallboy这可能是您正在寻找的,那么
    ActiveSupport::TestCase
    是否会在每次测试之间自动清理数据库?这让我快发疯了,但它似乎已经这么做了?(不需要任何额外的宝石)您似乎缺少“测试夹具”。搜索“Rails测试夹具”将发现您试图在此处重新发明的车轮。