2017-09-27 10 views
0

테이블 헤더의 일부 세부 사항에 대해 일반적인 Assert.AreEqual 호출을 시도하지만 예상되는 결과의 형식을 지정하는 방법을 파악하는 데 어려움을 겪고 있습니다.어설 션에서 regex 와일드 카드를 어떻게 사용합니까?

"× •••\r\nAcme Health Fund\r\nBalance Date: 9/27/2017" 

나는 단지 한국 전기 보건 기금의 텍스트가 존재 함을 주장하려면 다음과 같이 GetTableHeader 호출의 반환 값입니다. 현재 통화는 다음과 같습니다.

Assert.AreEqual("/.*Acme Health Fund.*/" , GetTableHeader()); 

AreEqual 호출에서 첫 번째 매개 변수의 서식을 어떻게 지정하면 Acme 건강 기금 만 기대할 수 있습니까?

도움을 주시면 감사하겠습니다.

+0

@ WiktorStribiżew -이 질문은 귀하가 선택한 것과 중복 된 것인지 잘 모르겠습니다. OP는 그의 정규 표현식을 작성했습니다. 그의 질문은 NUnit 어설 션 내에서 그 질문에 관한 것입니다. (정규식이 맞는지 아닌지는 모르겠지만 질문하지는 않습니다.)) – Chris

+1

@ WiktorStribiżew - NUnit이 무엇인지 알고 있습니다. 덕분에 도움을 청합니다! 'Assert.AreEqual()'은 정규식을 처리하지 않기 때문에 정규식을 수정하는 것은 한 단계이지만 문제를 해결하지는 않습니다 - OP는 RegexConstraint를 대신 사용해야합니다. OP의 질문은 "정규 표현식을 NUnit 어설 션으로 사용하는 법"입니다. "왜 내 정규 표현식이 작동하지 않습니까?" 다시 투표하기로 결정했습니다 - 이것이 내 요점을 이해하는 데 도움이되기를 바랍니다. =) – Chris

+1

크리스, 내 질문을 다시 열어 주셔서 감사합니다. 감사합니다. 'duplicate'링크는 전혀 도움이되지 않았습니다. – JOberloh

답변

1

NUnit 3은 훨씬 더 강력한 제약 구문이 있으므로 대신 사용하는 것이 좋습니다. 새로운 기능은 이전 Assert.AreEqual 스타일이 아닌 제약 조건 구문에 추가됩니다.

정규식은 사용자가 원하는만큼 잔인하며 문자열을 Does.Contain으로 지정하면됩니다. 당신이 정말로 정규식을 사용해야하는 경우

Assert.That(GetTableHeader(), Does.Contain("Acme Health Fund")); 

, 먼저는 슬래시에 둘러싸 필요가 없습니다 당신은 Does.Match 구문을 사용합니다.

Assert.That(GetTableHeader(), Does.Match(".*Acme Health Fund.*")); 

수정 내용을 정규 표현식에 기록하십시오.

+0

Rob, 답변 해 주셔서 감사 드리며 두 솔루션 모두에서 작동하도록 할 수 있었지만 Does.Contain은 Match보다 사용하기가 훨씬 쉽습니다. – JOberloh