2014-10-04 9 views
0

저는 Cucumber 프레임 워크의 초보자입니다. 단계 정의 안에 Ruby 메서드를 호출하려고합니다.오이에서 메서드를 호출하는 방법 - 단계 정의

And(/^I create scenarios$/) do 
    Test_class.create_test_scenario 
end 

을 나는 '초기화되지 않은 상수 Test_class 받고 있어요 : 여기 내가이 나는 단계 정의의 내부의 메소드를 호출하려고 어떻게 lib 디렉토리 내 방법/methods.rb

class Test_class 

    def create_test_scenario() 
    puts "here!!!" 
    end 

end 

을 정의하는 방법이다 (NameError) '테스트를 실행할 때. 어떤 아이디어? 감사.

답변

1

Test_class 개체를 인스턴스화하지 않았습니다.

class Test_class 
    def create_test_scenario 
    puts "here!!!" 
    end 
end 

Test_class.new.create_test_scenario # notice `new` method chained here 
#=> here!!! 

에라타 : 예를 들어

다음은 initialize 방법과 어떻게 초기화 개체의 상태를 설정하는 데 사용할 수 있습니다 설명 documentation에 대한 링크입니다.

클래스 (및 모듈) 이름의 경우 루비 규칙은 CamelCase을 사용합니다. 예 : Test_class 대신 TestClass

0

오드가 말했듯이 이것은 초기화에 해당합니다. 컨텍스트에 코드를 삽입하려면 단계 정의의 클래스 객체를 인스턴스 변수 (@로 시작하는)로 초기화합니다. 그러면 다음과 같이 보입니다.

And(/^I create scenarios$/) do 
    @Test_class = Test_class.new 
    @Test_class.create_test_scenario 
end 
+0

의견을 보내 주셔서 감사합니다. Phonesis and orde. Phonesis, 내가 명시한대로 단계 정의에서 클래스 개체를 초기화하지만 여전히 동일한 오류가 발생합니다 : 초기화되지 않은 상수 Test_class (NameError). 더 이상의 제안? 감사. –

+0

테스트를 실행하기 전에 설정 루틴 역할을하는 ENV.rb 파일을 설정해야 할 수 있습니다. 이 경우 require 문에 초기화해야하는 클래스를 포함해야합니다. 다음과 같이 : $ LOAD_PATH.unshift (File.dirname (__ FILE__) + '/../../features/ pages')' 'require 'Test_class'' – Phonesis

+0

그것은 작동합니다! 고마워, 폰지! –

관련 문제