I've got a matcher, and I want to make sue the object I have is the right type. E.g. a long or a String.
void expect(String xpath, Matcher matcher) {
String actual = fromXpath(xpath);
// convert actual into correct type for matcher
assertThat(actual, matcher);
}
I want method like Matcher.getType
. So I could do something like
if (matcher.getType().equals(Long.class)) {
long actual = Long.parseString(fromXpath(xpath));
}
But I cannot see for the life of me how I get the of the matcher.
If the value you're getting from fromXpath
is a String
, but it may be a String
that can be parsed as a long
, just match everything as a String
.
That is, you're not missing many real problems when you change:
assertThat(a, is("abc"));
assertThat(Long.parseLong(b), is(123L));
for:
assertThat(a, is("abc"));
assertThat(b, is("123"));
So use the latter.
(Using the latter will also catch a few errors, like unexpected leading zeroes.)