Pytanie Nie ładuje się osprzętu walizki testowej


Railsy wydają się nie ładować każdy urządzenia do testów jednostkowych lub funkcjonalnych. Mam prosty "products.yml", który analizuje i wygląda poprawnie:

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

Mój test funkcjonalny kontrolera rozpoczyna się od:

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

Zgodnie z tą książką, Rails powinien "magicznie" załadować urządzenia (tak jak moje test_helper.rb ma fixtures :all w tym. Dodałem również jawne obciążenie urządzeń (patrz wyżej). Tak Rails narzeka:

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
...

Natknąłem się na inne pytanie dotyczące testu Railsów Testowanie jednostek Railsowych nie ładuje urządzeń, ale to prowadzi do problemu z wtyczką (co ma związek z kolejnością ładowania urządzeń).

BTW, rozwijam się na Mac OS X 10.6 z Rail 2.3.5 i Ruby 1.8.7, bez dodatkowych wtyczek (poza instalacją podstawową).

Wszelkie wskazówki dotyczące debugowania, czemu magia Railsów wydaje się tu zawodzić? Czy to jest problem z wersją? Czy mogę śledzić kod w bibliotekach i znaleźć odpowiedź? Jest tak wiele modułów "mixin", których nie mogę znaleźć fixtures metoda naprawdę żyje.


12
2018-06-06 17:26


pochodzenie


APIdock jest przydatny na takie czasy, kiedy trzeba znaleźć dokumenty metod. apidock.com/rails/ActiveRecord/TestFixtures/ClassMethods/... - x1a4
dzięki x1a4! apidocks to bardzo przydatne narzędzie, które dodaję do mojego zestawu narzędzi. wciąż nie jestem pewien, co jest główną przyczyną ... - Deano


Odpowiedzi:


W Railsach 3.2 stwierdzam, że podczas uruchamiania pojedynczego pliku testowego (określającego TEST = / test / unit / foo.rb) urządzenia nie są ładowane. Jednak podczas uruchamiania testów z

ruby -Itest /test/unit/foo.rb

urządzenia są ładowane zgodnie z oczekiwaniami.


2
2017-09-01 06:23





Używając ruby ​​1.8.7 i szyn 2.1.1, rozwiązałem problem przez ustawienie self.use_instantiated_fixtures = true w test_helper.rb.


1
2017-10-04 14:30





Poddając się, próbowałem przeinstalować / przebudować na szynę 3.0.0beta3. to rozwiązało problem. Mogę tylko założyć, że było to pewnego rodzaju niedopasowanie wersji.


0
2018-06-07 00:57