1

Ruby 1.9.3-p0을 사용하여 Rails 3.2.1로 업그레이드했고 Machinist 2.0을 사용하고 있습니다. 대규모 프로젝트를 업데이트하기 전에 모든 테스트가 통과되었습니다. 내 RSpec에 시험에 '하자'호출 내에서 청사진을 만든 다음 이전 할 블록에서 참조 할 때 나는 "m가 갖는 문제는이 작동하는 데 사용rails 3.2 및 기계공 문제

let (:new_post) {Post.make!} 

    before do 
    Post.stub!(:new).and_return(new_post) 
    end 

., 그리고 지금은 얻을 다음과 같은 오류 : 주위 지금 내 작품을 위해

require 'machinist/active_record' 
Post.blueprint do 
    title {"Post"} 
    body {"hello world"} 
end 

전과 할 블록 내에서 인스턴스 변수를 사용하여 만드는 것입니다,하지만 '하게 사용하기 좋은 것 : 여기

1) PostsController GET index assigns all posts as @posts 
    Failure/Error: let (:new_post) {Post.make!} 
    NoMethodError: 
     undefined method `title=' for nil:NilClass 
    # ./spec/support/blueprints.rb:22:in `block in <top (required)>' 
    # ./spec/controllers/posts_controller_spec.rb:37:in `block (2 levels) in <top (required)>' 
    # ./spec/controllers/posts_controller_spec.rb:40:in `block (2 levels) in <top (required)>' 

내 청사진 '그것으로 전화를 걸다. ps 내 rspec 테스트 클리너.

답변

0

재미있군, 레일즈 3.2.1, 머시 언 스트 2.0, 루비 1.9.2-p290을 사용하고 있지만, 똑같은 문제가 발생했습니다. 나는 Post.stub(:new) 스텁 메서드와 Machinist make 메서드를 실행하는 사이에 충돌이 있다고 생각하지만 코드를 파고 들지 않았습니다.

내가 함께 왔어요 가장 좋은 방법은 다음과 같습니다 (하자 게으른로드 RSpec에에 있기 때문에)는 스텁 방법에 도달하기 전에이가하자를 초기화합니다

before do 
    new_post 
    Post.stub!(:new).and_return(new_post) 
    end 

. 해키지만, 적어도 당신 (그리고 나)은 let 진술서를 보관할 수 있습니다.

+0

레일스 3.2.1로 업그레이드하여 동일한 문제가 발생했으나 지금은 좋은 방법입니다. – map7

+0

그것은 당신을 위해 일한 것을 기쁘게 생각합니다. 코드를 살펴보고 문제를 알릴 필요가있는 프로젝트를 찾아 보겠습니다. – poetmountain