Added throwUnless and throwUnlessAsync
These are similar to `expect` and `expectAsync` except that they throw exceptions rather than recording matcher failures as spec/suite failures. They're intended to support using Jasmine matchers in testing-library's `waitFor`, and also provide a way to integration-test custom matchers. These funtions are not equivalent to `expect` and `expectAsync` and should not be used in situations where you want a matcher failure to reliably fail the spec. Whether that happens depends on the structure of the surrounding code. In general, you should only use `throwUnless` when you expect something (which could be your own code or library code like `waitFor`) to catch the resulting exception. Fixes #2003. Fixes #1980.
This commit is contained in:
@@ -225,6 +225,50 @@ getJasmineRequireObj().interface = function(jasmine, env) {
|
||||
return env.expectAsync(actual);
|
||||
},
|
||||
|
||||
/**
|
||||
* Create an asynchronous expectation for a spec and throw an error if it fails.
|
||||
*
|
||||
* This is intended to allow Jasmine matchers to be used with tools like
|
||||
* testing-library's `waitFor`, which expect matcher failures to throw
|
||||
* exceptions and not trigger a spec failure if the exception is caught.
|
||||
* It can also be used to integration-test custom matchers.
|
||||
*
|
||||
* If the resulting expectation fails, a {@link ThrowUnlessFailure} will be
|
||||
* thrown. A failed expectation will not result in a spec failure unless the
|
||||
* exception propagates back to Jasmine, either via the call stack or via
|
||||
* the global unhandled exception/unhandled promise rejection events.
|
||||
* @name throwUnlessAsync
|
||||
* @param actual
|
||||
* @global
|
||||
* @param {Object} actual - Actual computed value to test expectations against.
|
||||
* @return {matchers}
|
||||
*/
|
||||
throwUnlessAsync: function(actual) {
|
||||
return env.throwUnless(actual);
|
||||
},
|
||||
|
||||
/**
|
||||
* Create an expectation for a spec and throw an error if it fails.
|
||||
*
|
||||
* This is intended to allow Jasmine matchers to be used with tools like
|
||||
* testing-library's `waitFor`, which expect matcher failures to throw
|
||||
* exceptions and not trigger a spec failure if the exception is caught.
|
||||
* It can also be used to integration-test custom matchers.
|
||||
*
|
||||
* If the resulting expectation fails, a {@link ThrowUnlessFailure} will be
|
||||
* thrown. A failed expectation will not result in a spec failure unless the
|
||||
* exception propagates back to Jasmine, either via the call stack or via
|
||||
* the global unhandled exception/unhandled promise rejection events.
|
||||
* @name throwUnless
|
||||
* @param actual
|
||||
* @global
|
||||
* @param {Object} actual - Actual computed value to test expectations against.
|
||||
* @return {matchers}
|
||||
*/
|
||||
throwUnless: function(actual) {
|
||||
return env.throwUnless(actual);
|
||||
},
|
||||
|
||||
/**
|
||||
* Mark a spec as pending, expectation results will be ignored.
|
||||
* @name pending
|
||||
|
||||
Reference in New Issue
Block a user