导轨功能测试

rya*_*ogo 5 ruby ruby-on-rails functional-testing

在Rails自动生成的功能测试(test/functional/products_controller_test.rb)中,我看到以下代码:

class ProductsControllerTest < ActionController::TestCase
  setup do
    @product = products(:one)
    ...
  end

  ...some tests here... 
end
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 方法调用在哪里/如何products()定义?

  2. 究竟products(:one)是什么意思?看看代码,它可能意味着"创建一个产品",但它是如何工作的?

NB我是Ruby/Rails的新手,如果这些都是一个微不足道的问题,请道歉.

Jai*_*yer 11

如果查看test/fixtures文件夹,您将看到products.yml文件.这是在创建模型时自动生成的.在您的测试文件中,products(:one)指的是标记为"one"的文件中的产品.Fixtures会自动加载到数据库中进行测试,并products()创建该方法作为这些对象的便捷访问器.

您可以根据需要直接在yml文件中添加自己的夹具对象.