Files
jasmine/spec/core/matchers/toHaveSpyInteractionsSpec.js
T
Nito Buendia c13dd26c4b Change set up to each of the formats
This goes against DRY principle, but it was recommended by Jasmine team to reduce coupling between tests.
2022-03-16 21:18:25 +08:00

67 lines
2.0 KiB
JavaScript
Executable File

describe('toHaveSpyInteractions', function() {
it('detects spy interactions', function() {
let spyObj = jasmine.createSpyObj('NewClass', ['spyA', 'spyB']);
spyObj.spyA();
expect(spyObj).toHaveSpyInteractions();
});
it('detects multiple spy interactions', function() {
let spyObj = jasmine.createSpyObj('NewClass', ['spyA', 'spyB']);
spyObj.spyA();
spyObj.spyB();
spyObj.spyA();
expect(spyObj).toHaveSpyInteractions();
});
it('detects no spy interactions', function() {
let spyObj = jasmine.createSpyObj('NewClass', ['spyA', 'spyB']);
expect(spyObj).not.toHaveSpyInteractions();
});
it('ignores non-observed spy object interactions', function() {
let spyObj = jasmine.createSpyObj('NewClass', ['spyA', 'spyB']);
spyObj.otherMethod();
expect(spyObj).not.toHaveSpyInteractions();
});
[true, 123, 'string'].forEach(function(testValue) {
it(`throws error if a non-object (${testValue}) is passed`, function() {
let spyObj = jasmine.createSpyObj('NewClass', ['spyA', 'spyB']);
expect(function() {
expect(true).toHaveSpyInteractions();
}).toThrowError(Error, /Expected a spy object, but got/);
});
});
[['argument'], [false, 0]].forEach(function(testValue) {
it(`throws error if arguments (${testValue}) are passed`, function() {
let spyObj = jasmine.createSpyObj('NewClass', ['spyA', 'spyB']);
expect(function() {
expect(spyObj).toHaveSpyInteractions(...testValue);
}).toThrowError(Error, /Does not take arguments/);
});
});
it('throws error if spy object has no spies', function() {
const spyObj = jasmine.createSpyObj('NewClass', ['method']);
// Removing spy since spy objects cannot be created without spies.
spyObj.method = function() {};
expect(function() {
expect(spyObj).toHaveSpyInteractions();
}).toThrowError(
Error,
/Expected a spy object with spies, but object has no spies/
);
});
});