2015-01-22 6 views
0

여기서 볼 수 있듯이 .yml 파일의 config/environments에있는 값을 Examples: 테이블에 가져 오려고합니다.기능 파일의 "시나리오 개요 :"의 "예제 :"테이블에 전달 매개 변수

하지만 가져 오는 대신 값을 그대로 보내고 있습니까?

이와 같은 매개 변수를 전달할 수 있습니까? 그렇다면 어떻게?

그렇지 않은 경우 Ruby 또는 Cucumber 기능/개념이 사용자에게 허용하지 않는 이유는 무엇이며 그 이유는 무엇입니까? 쿼리 1에

Feature: Verify login of all test users 
I want to verify all test users can login. 
    Scenario Outline: Login as different users on the website 
    Given I am on login page 
    When I enter "<username>" and password 
    Then I click Login button 
    And I see "<user>" successfully logged in 
    Examples: 
    |user|username| 
    |testuser1|#{FigNewton.test1_email}| 
    |testuser2|FigNewton.test2_email| 

답변

0

답변 : 당신은 Examples: 테이블을 통해 변수화하지만 직접이 .feature 파일이 아닌 루비 .rb 파일이기 때문에 FigNewton gem를 사용하여 값을 전달 할 수 없다. 쿼리 1에

답변 : 당신이 그것을 할 방법 : 특정 사용자 이름을 찾을 때 무엇을해야 하는지를 steps definition 언급 사용자 이름과 당신의 변수화 및 루프를. 이것으로 쉽게 매개 변수화 할 수 있습니다.

  1. 예 :

    |user|username| 
    |testuser1|test1| 
    |testuser2|test2| 
    
  2. 단계 정의가

    When(/^I enter "([^"]*)" and password$/) do |username| 
    case username 
    when 'test1' 
        on(LoginPage).user_email = FigNewton.test1_email 
    when 'test' 
        on(LoginPage).user_email = FigNewton.test2_email 
    end 
    .... 
    .... 
    end 
    
이 모든
1

첫 번째는 꽤 빈약 한 기능입니다, 더 나은 것

Scenario: Test Users can login 
    Given there are some test users 
    When the test users login 
    Then all test users should be logged in 

또는 그와 비슷한 것. 기능은 당신이하고 싶은 일과 왜, 당신이 어떻게 일하는지에 대한 진술을하기위한 것입니다.

위의 작업을 수행하면 모든 프로그래밍이 단계 정의에서 수행됩니다. 이렇게하면 원하는대로 할 수 있습니다.

당신은 아주 쉽게 예를 들어

Given 'there are some test users' do 
    @test_users = create_test_users 
end 

When 'the test users login' do 
    @login_results = login_each(@test_users) 
end 

Then 'all test users should be logged in' do 
    expect(check_for_errors(@login_results).count).to eql 0 
end 

then implement the methods you need in a step helper e.g 

module TestUsersLoginStepHelper 
    def create_test_users 
    ... 

    def login_each(users) 
    users.each do 
     ... 
    ... 
end 
World TestUsersLoginStepHelper 

단계 정의에서 모든 작업을 둬서, 당신이 만드는이를 구현 할 수 있습니다 당신은 당신이

을 무엇을해야하는 루비의 모든 기능을 사용할 수있는, 훨씬 쉽게 라이브
+0

이 질문에 질문하지 않았습니다. 그러나 .feature 파일을 정정 해 주셔서 감사합니다. – paul

+0

환영합니다. 기능에 대한 많은 질문에는 기능을 프로그래밍하려는 시도가 포함됩니다. 기능은 프로그래밍을 위해 설계된 것이 아니기 때문에 프로그래밍하기가 어렵고 어색한 이유입니다. 프로그래밍이 더 낮아지고 모든 것이 더 쉬워집니다. – diabolist

-1

필요할 때 언제든지 프로젝트에서이 DDD 시나리오를 사용할 수 있습니다. 여러 테스트 사례를 만들 필요가 없으므로 예제 개요에서 데이터 값을 가져옵니다.

기능 파일 : 테스트 케이스

시나리오 개요 : 나는 "사용자 이름>"을 입력하면 "비밀번호>"응용 프로그램

에 로그인

그럼 난 클릭 로그인 버튼

사용자가 성공적으로 로그인했습니다.

예 :

| 사용자 이름 | 암호 |

| [email protected] | Test1234!

| [email protected] | Test1234!


단계 정의 :

은 (/^I 입력 "([^"] ) "와"([^ "])"$ /)가 할 | 사용자 이름, 암호 |

수면 20 (로그인) .email_edit_text_element.send_keys가에 를 사용자 이름을

(로그인) 암호를 다음

(/^I 로그인 버튼을 클릭 .password_edit_text_element.send_keys $ /) do 수면 20

on (로그인) .logi n_button_element.click

다음 (/^나는/사용자가 성공적으로 $ 로그인 참조)

예상 할 (에 (로그인) .account_bg_cover_element.displayed?).

을 be_truthy에

풋 '로그인 성공'루비 파일에서

, 당신은 메소드를 생성했다. 당신은 그 메소드를 단계 정의에서 호출하고있다. 작동합니다. 전달할 매개 변수의 이름을 확인하십시오.