2017-03-17 10 views
0

그래서 우리는 상당히 신선한 Angular2 프로젝트에서 e2e 테스트를 탐색하기 위해 Cucumber + Gherkin을 도입했습니다. 우리는 JS에 단계 정의를 작성하기로 결정했습니다. 나는 단계 정의에서 상당히 일반적으로 노력하고있다. 이것은 내가 달성하기 위해 노력하고 무엇 :Cucumber + Gherkin : 자연 언어를 부울로 구문 분석

을 우리는 가지고

this.Then(/^I should see (.*) on the page$/, function(componentName, callback) { expect(element(by.id(componentName)).isPresent()).to.eventually.be.true; setTimeout(callback, 1000); });

또한의 형태로 정의 할 수 있도록 싶습니다

Then I should not see Results on the page

그 특정을 표시하려면 요소는 표시되지 않아야합니다. 그 일을하는 우아한 방법이나 내가 쓸 수있는 도구를 내장하고 있습니까? 문서 및 인터넷 검색은 설명에 true/false을 포함한 내용 만 제공했습니다. 나는 c'n'p가 우리의 계단 정의를 신속하게 성장시키고, 이런 종류의 것을 정면으로 파악하지 않으면 유지 보수를 불필요하게 어렵게 만들 것이라고 생각합니다. 이것이 어리석은 아이디어라고 생각한다면 저를 그만 두십시오. 그렇다면 그 이유를 말해주십시오.

답변

1

단계에서 'not'키워드를 포착하고 단계 구현에서 올바른 경로를 선택하여 두 경로를 구현할 수 있습니다.

그러나 나는 그렇게하지 않을 것이고 두 단계를 수락 할 것입니다. 그러면 코드를 읽기 쉽고 오류가 발생하기 쉽습니다.

나는 단 한 줄짜리 단계를 만들고 도우미 클래스에 실행을 위임하기 위해 열심히 노력할 것이다. 도우미 클래스는 두 가지 방법, 긍정적 인 경우와 부정적인 경우를 가질 수 있습니다.

this.Then(/^I should not see (.*) on the page$/, function(componentName) { 
    isNotPresent(componentName); 
    }); 

this.Then(/^I should see (.*) on the page$/, function(componentName) { 
    isPresent(componentName); 
    }); 

그리고 부정적인 경우 : 당신이 등 시간 초과로 할 것 같은 그것은 또한 일을 처리 할 수 ​​

다시 작성 코드를, 나는 이런 식으로 뭔가를하려고 할 것

자바 스크립트에 익숙하지 않아 자바 스크립트가 아닐 수도 있습니다. 그러나 잠재적 인 공통 세부 사항을 도우미에게 밀고 Gherkin과 JavaScript 사이에 필요한 코드를 최소화하는 데 열심히 노력할 것입니다.

+0

그건 합리적인 중간계처럼 들리네. 감사! – jasper