Since foo is an async function, it implicitly returns a promise so you can use the .resolves / .rejects matchers and then use the toThrow method, and this accepts a regex or string to match the error message property. IMHO it reads more semantically correct.
The toThrow API is quite weird.
If you pass a string, it matches it anywhere, so 'foo' and /foo/ is the same.
And if you want to strictly match the whole message, you need to do
.toThrow(/^literal message$/)// RegEx with ends.toThrow(newError('literal message'))// The Error class does NOT matter in this case.
If you actually care about the constructor, you have to pass just it.
Honestly, I would simply:
Since
foo
is an async function, it implicitly returns a promise so you can use the .resolves / .rejects matchers and then use the toThrow method, and this accepts a regex or string to match the errormessage
property. IMHO it reads more semantically correct.Cheers,
The
toThrow
API is quite weird.If you pass a string, it matches it anywhere, so
'foo'
and/foo/
is the same.And if you want to strictly match the whole message, you need to do
If you actually care about the constructor, you have to pass just it.
I use
a lot nowadays.