I need to check that one string contains many substrings. The following works
string should include ("seven")
string should include ("eight")
string should include ("nine")
but it takes three almost duplicated lines. I'm looking for something like
string should contain allOf ("seven", "eight", "nine")
however this doesn't work... The assertion just fails while string contains these substrings for sure.
How can I perform such assertion in one line?
Use the indexOf() Function to Find Substring in Scala Here, we used the indexOf() function to get the index of the available substring. This function returns an integer value greater than 0 if a substring is present.
The function substring() in Scala takes two parameters as an argument. First is the “int beginIndex” which is the starting index point of the substring function in Scala, and the second one is “int endIndex” which is the ending point of the substring() function in Scala.
Try this:
string should (include("seven") and include("eight") and include("nine"))
You can always create a custom matcher:
it should "..." in {
"str asd dsa ddsd" should includeAllOf ("r as", "asd", "dd")
}
def includeAllOf(expectedSubstrings: String*): Matcher[String] =
new Matcher[String] {
def apply(left: String): MatchResult =
MatchResult(expectedSubstrings forall left.contains,
s"""String "$left" did not include all of those substrings: ${expectedSubstrings.map(s => s""""$s"""").mkString(", ")}""",
s"""String "$left" contained all of those substrings: ${expectedSubstrings.map(s => s""""$s"""").mkString(", ")}""")
}
See http://www.scalatest.org/user_guide/using_matchers#usingCustomMatchers for more details.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With