2010-06-06 2 views
12

레일이 이 아닌 것으로 보입니다.로드가 단위 또는 기능 테스트를위한 고정 장치입니다. (책에 따르면, 레일은 "마술"비품을로드해야합니다레일 테스트 케이스 고정구가 장착되지 않음

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 

:

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 

내 컨트롤러 기능 테스트가 시작 : 나는 구문 분석하고 올바른 표시 간단한 'products.yml'을 가지고 .

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

내가 다른 레일 건너 않았다. 내 test_helper.rb 그것에 fixtures :all을 가지고 나는 또한 (위에서 본) 명시 적 설비 부하 예 레일 불평을 추가 테스트 픽스처 질문 Rails unit testing doesn't load fixtures,하지만 그건 플러그인 문제 (무언가를로드하는 순서와 관련이 있음)로 연결됩니다.

현재, Rail 2.3.5 및 Ruby 1.8.7이 설치된 Mac OS X 10.6에서 추가 플러그인 (기본 설치 이상)이 필요하지 않습니다.

디버그 방법에 대한 모든 안내는 입니다. 왜 Rails의 마술은 여기서 실패한 것 같습니까? 버전 문제입니까? 라이브러리로 코드를 추적하고 대답을 찾을 수 있습니까? fixtures 메서드가 실제로 어디에 있는지 찾을 수없는 "믹스 인"모듈이 너무 많습니다.

+0

APIdock은 메소드 문서를 찾아야하는 경우 유용합니다. http://apidock.com/rails/ActiveRecord/TestFixtures/ClassMethods/fixtures – x1a4

+0

감사합니다 x1a4! 아폽은 도구 상자에 추가 할 수있는 매우 편리한 도구입니다. 여전히 근본 원인이 무엇인지 확실하지 않습니다. – Deano

답변

0

포기하자 레일 3.0.0beta3에 재설치/재구성을 시도했습니다. 이 문제가 해결되었습니다. 나는 이것이 일종의 버전 불일치라고 생각할 수 있습니다.

1

ruby ​​1.8.7과 2.1.1 레일을 사용하여 test_helper.rb에 self.use_instantiated_fixtures = true을 설정하여 문제를 해결했습니다.

2

레일즈 3.2에서는 하나의 테스트 파일 (TEST =/test/unit/foo.rb 지정)을 실행할 때 조명기가로드되지 않는다는 것을 알았습니다. 그러나

ruby -Itest /test/unit/foo.rb 

으로 테스트를 실행하면 예상대로 조명기가로드됩니다.

관련 문제