레일 프로그래밍 프로그래밍에서 매우 유용한 한 가지 트릭은 즉석에서 메서드를 만드는 데 class_eval
을 사용할 수 있다는 것입니다. 지금 테스트를 시작하고 비슷한 아이디어가 테스트를 생성하는 데 사용될 수 있는지 궁금합니다.레일에서 테스트를 동적으로 생성하는 것이 가능합니까?
예를 들어, 컨트롤러에있는 모든 작업에 대해 사용자가 로그인해야하는 경우를 말하자면 저는 before_filter
입니다. before_filter
이 모든 작업에 적용되도록하는 테스트를 작성하고 싶습니다. 개별적으로 각 테스트를 작성하는 대신 이러한 테스트를 자동으로 생성하고 싶습니다.
이 유형의 테스트가 권장 할 만합니까? 아니면 테스트를 개별적으로 작성해야합니까? 그렇다면 어떻게 그렇게 할 것입니까?
편집 : 그것은 한 번만 실행 얻을 수 있도록 내가 이와 같은 코드 블록을 넣어 것입니다 지금은 사람들이 유용 할 수 확인했다고
actions = {:index => :get,:show => :get,:edit => :get,:update => :put}
actions.each_pair do |action,type|
class_eval(%Q{def test_user_required_for_#{action}
set_active_user users(:one)
#{type} :#{action}
assert flash[:error]
assert_redirected_to :action => :index
end
})
end
,이 같은 것을 보일 수 있습니다 이 테스트를 만들까요?
'class_eval'의 문자열 형식을 사용하지 마십시오. class_eval (반드시 필요하지는 않음)을 사용해야하는 경우 블록 양식을 사용하십시오. 더 안전합니다. –