Old-style custom matchers (those which call this.report()) are not supported with the ".not" matcher negation syntax.

This commit is contained in:
Christian Williams 2010-03-01 23:02:59 -05:00
parent 4b80a10969
commit 49f295690a
2 changed files with 22 additions and 2 deletions

View File

@ -513,6 +513,22 @@ describe("jasmine.Matchers", function() {
match(false).not.custom();
expect(lastResult().message).toEqual("Passed.");
});
it("should make old-style custom matchers blow up, but only when negated", function() {
spec.addMatchers({
custom: function() {
this.report();
}
});
expect(function() {
match(true).custom();
}).not.toThrow();
expect(function() {
match(true).not.custom();
}).toThrow();
});
});
describe("spy matchers >>", function() {

View File

@ -18,8 +18,12 @@ jasmine.Matchers.pp = function(str) {
/** @deprecated */
jasmine.Matchers.prototype.report = function(result, failing_message, details) {
// todo first: report deprecation warning [xw]
// todo later: throw new Error("As of jasmine 0.xx, custom matchers must be implemented differently -- please see jasmine docs");
// todo: report a deprecation warning [xw]
if (this.isNot) {
throw new Error("As of jasmine 0.11, custom matchers must be implemented differently -- please see jasmine docs");
}
this.reportWasCalled_ = true;
var expectationResult = new jasmine.ExpectationResult({
passed: result,