2017-10-14 1 views
0

몇 가지 기본적인 프로그래밍 실수를 범한 경우 specflow C#을 처음 접했습니다.Specflow 단계 정의가 실패로 인해 암시 적 형식 변수로 void를 설정할 수 없습니다.

나는 다음과 같은 포함 내 specflow에서 작업 목록이 있습니다 단계 사이

When I enter in invalid email Test.TestEmail.plc for Email address field 
    And I enter in invalid email Test.TestEmail.plc for Confirm email address field 

... 

    And I enter in correct email [email protected] for Email address field 

    And I enter in non matching email [email protected] for Confirm email address field 

... 

And I enter in matching email address [email protected] for Confirm email address field 

만 변경하면됩니다 - 이메일 (무효, 일치, 비 매칭) 의 종류 - 이메일 주소는 - 입력 된 텍스트 바

그래서 나는 그들을 paramertised 생각하지만 나는이 문제를 해결할 수있는 올바른 방법에 어떤 도움을 원했어 그래서 그것을 얻을 수 없습니다. 나는 시도하고 로케이터의에 의해 요소를 찾아 이메일 텍스트 문자열 유형을 설정 코드에서 모든

첫째 :

public void GetFieldAndEnterText(By fieldElement, string fieldText) => 
    _driver.FindElement(fieldElement).SendKeys(fieldText); 

단계 정의에서 내가해야 함은 다음과 같이 설정합니다

[When(@"I enter in (.*) email (.*) for (.*) field")] 
    public void WhenIEnterInInvalidEmailForField(string emailType, string fieldText, By fieldElement) 
    { 
     var email = _payment.GetFieldAndEnterText(PaymentDetailsResponsiveElements.EmailAddressField); 
     var confirmEmail = _payment.GetFieldAndEnterText(PaymentDetailsResponsiveElements.ConfirmEmailAddressField); 

     if (fieldElement.Equals("Email Address")) 
     { 
      return email; 
     }else if (fieldElement.Equals("Confirm Email Address")) 
     { 
      return confirmEmail; 
     } 

      _payment.GetFieldAndEnterText(fieldElement, fieldText); 
    } 

세 가지 매개 변수를 전달하려고합니다. 첫 번째 코드는 코드 측면에서 중요하지 않습니다. 따라서이 단계 정의를 반복해서 사용할 수 있습니다.

두 번째 매개 변수는 입력 할 이메일을 알기 위해 specflow에서 언급 한 이메일입니다.

마지막 매개 변수는 전자 메일 필드 또는 전자 메일 필드를 확인한 경우 해당 요소를 찾으려고하는 로케이터입니다.

그러나 단계 정의에서 전자 메일 및 confirmemail 변수에 대한 오류가 발생합니다. 이는 암시 적 형식으로 void를 설정할 수 없으며 void 형식이므로 반환되지 않습니다.

이 문제를 해결하는 올바른 방법은 무엇입니까?

+0

매개 변수 주위에 작은 따옴표를 넣고 정규식을 조정하십시오. 그래서 ""('. *)'('. *') 이메일 (. *) 입력시에는 '정확한 이메일' '[email protected]'을 입력하십시오. '(. *)'field ")] –

답변

0

코드에 몇 가지 문제가 있습니다. C#을 처음 접했을 때 C# 프로그래밍 자습서를 읽거나, 좋은 책을 읽는 등의 시간을 보내시기 바랍니다.

GetFieldAndEnterText()void 답장을 가지고 있습니다. 즉, 아무 것도 반환하지 않습니다. emailconfirmEmail에 대한 응답을 WhenIEnterInInvalidEmailForField()에 할당합니다. 이것이 오류의 원인입니다. WhenIEnterInInvalidEmailForField()이 (가) 수행해야하는 작업을 이해하지 못하기 때문에 문제를 해결하는 방법이 확실하지 않습니다. WhenIEnterInInvalidEmailForField()이 무엇을 기대하고 무엇을 말하고 있는지 설명하십시오.

GetFieldAndEnterText()은 두 개의 매개 변수를 사용하지만 emailconfirmEmail 행에는 하나만 전달됩니다.

클래스와 ifelse ifstring을 비교합니다.

void을 반환해야하는 WhenIEnterInInvalidEmailForField()에서 return을 두 번 사용하고 있습니다.

string emailType에 전달했지만 사용하지 마십시오.

+0

그래서 나는 whenienterininvalidemailforfield()가하기를 원하는 것은 단순히 요소의 텍스트 상자에 (sendkeys)를 입력하는 것이다. 모든 단계는 관련 단계에 따라 전자 메일 주소 인 텍스트를 입력하는 것입니다. –

+0

그래서 관련 필드 (텍스트 상자)에 관련 텍스트를 입력하십시오. –

+0

설명하는 것은 당신이 전달하는'GetFieldAndEnterText()'메소드입니다 이메일 또는 확인 이메일 필드의 'By'로케이터. 왜 다른 방법이 있을까요? – JeffC

관련 문제