2017-09-27 99 views
0

我想在表頭中的一些細節上做一般的Assert.AreEqual調用,但是我正在努力弄清楚如何成功地格式化預期的結果。在GetTableHeader調用的返回值如下:如何在斷言中使用正則表達式通配符?

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

我只想斷言Acme的健康基金文本存在。我當前的呼叫是這樣的:

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

我如何格式化我的第一個參數在AreEqual調用只希望Acme的健康基金?

任何幫助表示讚賞!

+0

@WiktorStribiżew - 我不確定這個問題是否與您選擇的問題重複。 OP已經編寫了他的正則表達式 - 他的問題是如何在NUnit中聲明。 (我不知道這個正則表達式是否正確 - 但這不是問的問題=)) – Chris

+1

@WiktorStribiżew - 我知道NUnit是什麼,謝謝,我幫助它維護它!修復正則表達式只有一步,但不會解決問題,因爲'Assert.AreEqual()'不處理正則表達式 - 而是需要使用RegexConstraint。 OP的問題是「如何在NUnit斷言中使用正則表達式」而不是「爲什麼我的正則表達式不工作」。我已經投票重新開放 - 希望這可以幫助你理解我的觀點。 =) – Chris

+1

謝謝你,克里斯,重新提出我的問題。我很感激。 '重複'鏈接根本沒有幫助。 – 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

相關問題