diff --git a/spec/core/matchers/toHaveSpyInteractionsSpec.js b/spec/core/matchers/toHaveSpyInteractionsSpec.js index c4b7b788..3720adb8 100755 --- a/spec/core/matchers/toHaveSpyInteractionsSpec.js +++ b/spec/core/matchers/toHaveSpyInteractionsSpec.js @@ -1,59 +1,85 @@ -describe('toHaveSpyInteractions', function() { - it('detects spy interactions', function() { +describe('toHaveSpyInteractions', function () { + + it('detects spy interactions', function () { + let matcher = jasmineUnderTest.matchers.toHaveSpyInteractions(); let spyObj = jasmineUnderTest.getEnv().createSpyObj('NewClass', ['spyA', 'spyB']); spyObj.spyA(); - expect(spyObj).toHaveSpyInteractions(); + let result = matcher.compare(spyObj); + expect(result.pass).toBe(true); + expect(result.message).toContain( + 'Expected spy object spies to have been called' + ); }); - it('detects multiple spy interactions', function() { + it('detects multiple spy interactions', function () { + let matcher = jasmineUnderTest.matchers.toHaveSpyInteractions(); let spyObj = jasmineUnderTest.getEnv().createSpyObj('NewClass', ['spyA', 'spyB']); spyObj.spyA(); spyObj.spyB(); spyObj.spyA(); - expect(spyObj).toHaveSpyInteractions(); + let result = matcher.compare(spyObj); + expect(result.pass).toBe(true); + expect(result.message).toContain( + 'Expected spy object spies to have been called' + ); }); - it('detects no spy interactions', function() { + it('detects no spy interactions', function () { + let matcher = jasmineUnderTest.matchers.toHaveSpyInteractions(); let spyObj = jasmineUnderTest.getEnv().createSpyObj('NewClass', ['spyA', 'spyB']); - expect(spyObj).not.toHaveSpyInteractions(); + let result = matcher.compare(spyObj); + expect(result.pass).toBe(false); + expect(result.message).toContain( + 'Expected spy object spies to have been called' + ); }); - it('ignores non-observed spy object interactions', function() { + it('ignores non-observed spy object interactions', function () { + let matcher = jasmineUnderTest.matchers.toHaveSpyInteractions(); let spyObj = jasmineUnderTest.getEnv().createSpyObj('NewClass', ['spyA', 'spyB']); + spyObj.otherMethod = function () { }; spyObj.otherMethod(); - expect(spyObj).not.toHaveSpyInteractions(); + let result = matcher.compare(spyObj); + expect(result.pass).toBe(false); + expect(result.message).toContain( + 'Expected spy object spies to have been called' + ); }); - [true, 123, 'string'].forEach(function(testValue) { - it(`throws error if a non-object (${testValue}) is passed`, function() { - expect(function() { - expect(testValue).toHaveSpyInteractions(); + [true, 123, 'string'].forEach(function (testValue) { + it(`throws error if a non-object (${testValue}) is passed`, function () { + let matcher = jasmineUnderTest.matchers.toHaveSpyInteractions(); + + expect(function () { + matcher.compare(testValue); }).toThrowError(Error, /Expected a spy object, but got/); }); }); - it('throws error if arguments are passed', function() { + it('throws error if arguments are passed', function () { + let matcher = jasmineUnderTest.matchers.toHaveSpyInteractions(); let spyObj = jasmineUnderTest.getEnv().createSpyObj('NewClass', ['spyA', 'spyB']); - expect(function() { - expect(spyObj).toHaveSpyInteractions('an argument'); + expect(function () { + matcher.compare(spyObj, 'an argument'); }).toThrowError(Error, /Does not take arguments/); }); - it('throws error if spy object has no spies', function() { - const spyObj = jasmineUnderTest.getEnv().createSpyObj('NewClass', ['method']); + it('throws error if spy object has no spies', function () { + let matcher = jasmineUnderTest.matchers.toHaveSpyInteractions(); + const spyObj = jasmineUnderTest.getEnv().createSpyObj('NewClass', ['notSpy']); // Removing spy since spy objects cannot be created without spies. - spyObj.method = function() {}; + spyObj.notSpy = function () { }; - expect(function() { - expect(spyObj).toHaveSpyInteractions(); + expect(function () { + matcher.compare(spyObj); }).toThrowError( Error, /Expected a spy object with spies, but object has no spies/