2017-03-16 1 views
1

SpecFlow를 사용하여 테스트를 구현하고 있는데 시스템 이름이 System33이고 시스템 이름을 참조 할 때마다 SpecFlow가 "33"을 매개 변수로 바인딩하려고합니다. 예를 들어 :SpecFlow가 식별자를 잘못 매핑합니다.

Given I am a valid System33 user logged in the system 

이 단계에 바인딩 :

[Given(@"I am a valid System(.*) user logged in the system")] 
public void GivenIAmAValidSystemUserLoggedInTheSystem(int p0) 

나는 다른 부서에서 사양을 받고 그들이 지속적으로 "System33"언급하기 때문에 매우 억세스 할수 있습니다.

이 표준 동작을 재정의하는 방법을 찾으려고했지만 문서가 솔직하게 열악합니다.

http://specflow.org/documentation/Using-Gherkin-Language-in-SpecFlow/

는 사람이 단어의 끝에 숫자가 매개 변수 값이 아닌 것을 SpecFlow 말할 수있는 방법을 알고 있나요?

답변

0

코드는 Specflow VS Integration의 일부인 골격 코드 생성기에 의해 생성됩니다. 그것은 단계에서 매개 변수가 될 수있는 것을 추측하려고 시도하고 대부분의 시간 숫자는 단계적으로 매개 변수이므로 숫자는 항상 매개 변수로 간주됩니다.

발생기의 동작을 구성 할 수는 없지만 단순히 문자열 만 변경하십시오. 이것은 정규식이며 원하는 것으로 변경할 수 있습니다. 생성기는 제안과 시작점 만 생성합니다.

1

그것은 설명하기 매우 간단합니다, 당신의 단계

[Given(@"I am a valid System(.*) user logged in the system")] 

()에 의해 표시 그룹을 반환하는 정규식가 발생합니다. 이 그룹은 당신의 계단 연결의 인자로 전달됩니다.

그러나

"I am a valid (System.*) user logged in the system" 

의 정규식 대신 System33와 그룹을 반환합니다. Given I am a valid System33 user logged in the system의 소스와 패턴 I am a valid (System.*) user logged in the system

결과의 결과를 제공합니다 당신은 어디 http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx

처럼 정규식 검사기를 사용하여이 작업을 볼 수 있습니다

발견 1 경기 :

  1. I am a valid System33 user logged in the system에는 1 개의 그룹이 있습니다. 프로그램에 사용
    1. System33

문자열 리터럴 :

C#

@"I am a valid (System.*) user logged in the system" 
관련 문제