Include rejection details in failure messages for toBeResolved and toBeResolvedWith

[#178559119]
This commit is contained in:
Steve Gravrock
2021-06-21 16:43:51 -07:00
parent 163f93d6ff
commit 5862b22aef
6 changed files with 51 additions and 19 deletions

View File

@@ -4535,7 +4535,7 @@ getJasmineRequireObj().toBeResolved = function(j$) {
* @example * @example
* return expectAsync(aPromise).toBeResolved(); * return expectAsync(aPromise).toBeResolved();
*/ */
return function toBeResolved() { return function toBeResolved(matchersUtil) {
return { return {
compare: function(actual) { compare: function(actual) {
if (!j$.isPromiseLike(actual)) { if (!j$.isPromiseLike(actual)) {
@@ -4546,8 +4546,15 @@ getJasmineRequireObj().toBeResolved = function(j$) {
function() { function() {
return { pass: true }; return { pass: true };
}, },
function() { function(e) {
return { pass: false }; return {
pass: false,
message:
'Expected a promise to be resolved but it was ' +
'rejected with ' +
matchersUtil.pp(e) +
'.'
};
} }
); );
} }
@@ -4602,10 +4609,14 @@ getJasmineRequireObj().toBeResolvedTo = function(j$) {
}; };
} }
}, },
function() { function(e) {
return { return {
pass: false, pass: false,
message: prefix(false) + ' but it was rejected.' message:
prefix(false) +
' but it was rejected with ' +
matchersUtil.pp(e) +
'.'
}; };
} }
); );

View File

@@ -96,8 +96,8 @@ describe('AsyncExpectation', function() {
jasmine.getEnv().requirePromises(); jasmine.getEnv().requirePromises();
var matchersUtil = { var matchersUtil = {
buildFailureMessage: function() { pp: function(val) {
return 'failure message'; return val.toString();
} }
}, },
addExpectationResult = jasmine.createSpy('addExpectationResult'), addExpectationResult = jasmine.createSpy('addExpectationResult'),
@@ -114,7 +114,8 @@ describe('AsyncExpectation', function() {
expect(addExpectationResult).toHaveBeenCalledWith( expect(addExpectationResult).toHaveBeenCalledWith(
false, false,
jasmine.objectContaining({ jasmine.objectContaining({
message: 'Some context: failure message' message:
'Some context: Expected a promise to be resolved but it was rejected with rejected.'
}) })
); );
}); });
@@ -144,7 +145,8 @@ describe('AsyncExpectation', function() {
false, false,
jasmine.objectContaining({ jasmine.objectContaining({
message: message:
"Some context: Expected a promise to be resolved to 'a' but it was rejected." "Some context: Expected a promise to be resolved to 'a' " +
"but it was rejected with 'b'."
}) })
); );
}); });

View File

@@ -15,12 +15,19 @@ describe('toBeResolved', function() {
it('fails if the actual is rejected', function() { it('fails if the actual is rejected', function() {
jasmine.getEnv().requirePromises(); jasmine.getEnv().requirePromises();
var matchersUtil = new jasmineUnderTest.MatchersUtil(), var matchersUtil = new jasmineUnderTest.MatchersUtil({
pp: jasmineUnderTest.makePrettyPrinter([])
}),
matcher = jasmineUnderTest.asyncMatchers.toBeResolved(matchersUtil), matcher = jasmineUnderTest.asyncMatchers.toBeResolved(matchersUtil),
actual = Promise.reject('AsyncExpectationSpec rejection'); actual = Promise.reject(new Error('AsyncExpectationSpec rejection'));
return matcher.compare(actual).then(function(result) { return matcher.compare(actual).then(function(result) {
expect(result).toEqual(jasmine.objectContaining({ pass: false })); expect(result).toEqual({
pass: false,
message:
'Expected a promise to be resolved but it was rejected ' +
'with Error: AsyncExpectationSpec rejection.'
});
}); });
}); });

View File

@@ -19,14 +19,15 @@ describe('#toBeResolvedTo', function() {
pp: jasmineUnderTest.makePrettyPrinter() pp: jasmineUnderTest.makePrettyPrinter()
}), }),
matcher = jasmineUnderTest.asyncMatchers.toBeResolvedTo(matchersUtil), matcher = jasmineUnderTest.asyncMatchers.toBeResolvedTo(matchersUtil),
actual = Promise.reject('AsyncExpectationSpec error'); actual = Promise.reject(new Error('AsyncExpectationSpec error'));
return matcher.compare(actual, '').then(function(result) { return matcher.compare(actual, '').then(function(result) {
expect(result).toEqual( expect(result).toEqual(
jasmine.objectContaining({ jasmine.objectContaining({
pass: false, pass: false,
message: message:
"Expected a promise to be resolved to '' but it was rejected." "Expected a promise to be resolved to '' but it was rejected " +
'with Error: AsyncExpectationSpec error.'
}) })
); );
}); });

View File

@@ -10,7 +10,7 @@ getJasmineRequireObj().toBeResolved = function(j$) {
* @example * @example
* return expectAsync(aPromise).toBeResolved(); * return expectAsync(aPromise).toBeResolved();
*/ */
return function toBeResolved() { return function toBeResolved(matchersUtil) {
return { return {
compare: function(actual) { compare: function(actual) {
if (!j$.isPromiseLike(actual)) { if (!j$.isPromiseLike(actual)) {
@@ -21,8 +21,15 @@ getJasmineRequireObj().toBeResolved = function(j$) {
function() { function() {
return { pass: true }; return { pass: true };
}, },
function() { function(e) {
return { pass: false }; return {
pass: false,
message:
'Expected a promise to be resolved but it was ' +
'rejected with ' +
matchersUtil.pp(e) +
'.'
};
} }
); );
} }

View File

@@ -45,10 +45,14 @@ getJasmineRequireObj().toBeResolvedTo = function(j$) {
}; };
} }
}, },
function() { function(e) {
return { return {
pass: false, pass: false,
message: prefix(false) + ' but it was rejected.' message:
prefix(false) +
' but it was rejected with ' +
matchersUtil.pp(e) +
'.'
}; };
} }
); );