Приспособления для рельсовых испытаний не загружаются - PullRequest
12 голосов
/ 06 июня 2010

Рельсы, по-видимому, не загружают любые приборы для модульных или функциональных испытаний. У меня есть простой «products.yml», который анализирует и выглядит правильно:

ruby:
  title: Programming Ruby 1.9
  description:
    Ruby is the fastest growing and most exciting dynamic
    language out there. If you need to get working programs
    delivered fast, you should add Ruby to your toolbox.
  price: 49.50
  image_url: ruby.png

Проверка работоспособности моего контроллера начинается с:

require 'test_helper'

class ProductsControllerTest < ActionController::TestCase
  fixtures :products

  setup do
    @product = products(:one)    
    @update = {
      :title => 'Lorem Ipsum' ,
      :description => 'Wibbles are fun!' ,
      :image_url => 'lorem.jpg' ,
      :price => 19.95
    }
  end

Согласно книге, Rails должен "магическим образом" загрузить приборы (так как в моем test_helper.rb есть fixtures :all. Я также добавил явную загрузку приборов (видно выше). Да Rails жалуется:

user @ host ~/Dropbox/Rails/depot > rake test:functionals
(in /Somewhere/Users/user/Dropbox/Rails/depot)
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -Ilib:test "/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake/rake_test_loader.rb" "test/functional/products_controller_test.rb" 
Loaded suite /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake/rake_test_loader
Started
EEEEEEE
Finished in 0.062506 seconds.

  1) Error:
test_should_create_product(ProductsControllerTest):
NoMethodError: undefined method `products' for ProductsControllerTest:Class
    /test/functional/products_controller_test.rb:7

  2) Error:
test_should_destroy_product(ProductsControllerTest):
NoMethodError: undefined method `products' for ProductsControllerTest:Class
    /test/functional/products_controller_test.rb:7
...

Я уже сталкивался с другим вопросом о тестовых устройствах Rails Модульное тестирование Rails не загружает приборы , но это приводит к проблеме с плагином (что-то связанное с порядком загрузки приборов).

Кстати, я работаю на Mac OS X 10.6 с Rail 2.3.5 и Ruby 1.8.7, без дополнительных плагинов (кроме базовой установки).

Есть какие-нибудь указатели о том, как отлаживать, , почему магия Rails, похоже, терпит неудачу? Это проблема версии? Могу ли я отследить код в библиотеках и найти ответ? Существует так много "смешанных" модулей, которые я не могу найти, где на самом деле живет метод fixtures.

Ответы [ 3 ]

2 голосов
/ 01 сентября 2012

В Rails 3.2 я обнаружил, что при запуске одного тестового файла (с указанием TEST = / test / unit / foo.rb) приборы не загружаются. Однако при выполнении тестов с

ruby -Itest /test/unit/foo.rb

приборы загружены как положено.

1 голос
/ 04 октября 2010

Используя ruby ​​1.8.7 и rails 2.1.1, я решил проблему, задав self.use_instantiated_fixtures = true в test_helper.rb.

0 голосов
/ 07 июня 2010

Отказавшись, я попытался переустановить / перестроить на Rail 3.0.0beta3.это решило проблему.Я могу только предположить, что это было какое-то несоответствие версий.

...