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.
Oh, no. I only ever use var in this scenario. Lets me skip out of the block scope without a separate variable declaration. And if no error happens, the variable is just undefined.
var is useful with Jest.
Any reason to not put the expect inside the catch bloc ?
Yes. If it doesn't throw assertion wouldn't run, and the test would pass.
You'd have to do
Personally, I'd just go with
(No need for
expect.assertions(1)
since theexpect
runs synchronously inline)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.
Could you please explain why you use only var with jest?
Oh, no. I only ever use var in this scenario. Lets me skip out of the block scope without a separate variable declaration. And if no error happens, the variable is just undefined.
Aha :)
So here is a place where var is still useful 😉
@adrianhelvik
Did you mean: