2011-07-27 2 views
0

내 컨트롤러 액션 : 내 lib 디렉토리/single.rb에서lib/directory의 메소드를 포함하는 레일즈 컨트롤렛 액션을 테스트해야하는 방법은 무엇입니까?

def single 
    final_static_matrix = Single.final_static_matrix(average_static_matrix, params[:priorities]) 

    ... 

    end 

: 내 controller_spec.rb에서

module Single 
    def self.final_static_matrix(average_static_matrix = {}, priorities = {}) 
    final_static_matrix = Hash.new 

    for i in 0..average_static_matrix.length-1 
     final_static_matrix[i.to_s] = average_static_matrix*priorities[i.to_s] 
    end 

    final_static_matrix 
    end 
end 

:

it "should be successful" do 
    get :single, :id => 1 
    priorities = {"0" => "1"} 
    matrix = {"0" => "3"} 
    Single.final_static_matrix(matrix, priorities) 
    response.should be_success 
end 

1) 난에서 함수를 호출하는 방법 lib/디렉토리? 2) 컨트롤러 파일에서 테스트를 작성하거나 single_spec.rb와 같은 smth를 작성하면 더 좋아질 수 있습니까?

답변

1

내가 할 것이다 일 : 컨트롤러 사양 내에서, 나는 메소드가 호출되는 것을 테스트하는 것입니다 :

describe "GET :single" do 
    it "succeeds" do 
    Single.should_receive(:final_static_matrix).and_return('something') 

    get :single, :id => 1 
    end 
end 

spec/lib/single_spec.rb 내부에는 final_static_matrix 행위가 예상대로 테스트합니다.

rspec2 here의 설명서를 확인할 수 있습니다.

0

응용 프로그램에 포함했다면 테스트에서 사용할 수 있어야합니다.

컨트롤러 테스트의 경우 컨트롤러를 테스트하십시오. 별도로 필요하면 라이브러리 자체에 대한 단위 테스트를 수행 할 수 있습니다.

관련 문제