The old style of merging all of a function's variable declarations into a single statement made some sense back in the days of var, but there's no reason to keep doing it now that we use const and let.
104 lines
3.2 KiB
JavaScript
104 lines
3.2 KiB
JavaScript
describe('toHaveBeenCalledTimes', function() {
|
|
it('passes when the actual 0 matches the expected 0 ', function() {
|
|
const matcher = privateUnderTest.matchers.toHaveBeenCalledTimes();
|
|
const calledSpy = new privateUnderTest.Spy('called-spy');
|
|
const result = matcher.compare(calledSpy, 0);
|
|
expect(result.pass).toBeTruthy();
|
|
});
|
|
it('passes when the actual matches the expected', function() {
|
|
const matcher = privateUnderTest.matchers.toHaveBeenCalledTimes();
|
|
const calledSpy = new privateUnderTest.Spy('called-spy');
|
|
calledSpy();
|
|
|
|
const result = matcher.compare(calledSpy, 1);
|
|
expect(result.pass).toBe(true);
|
|
});
|
|
|
|
it('fails when expected numbers is not supplied', function() {
|
|
const matcher = privateUnderTest.matchers.toHaveBeenCalledTimes();
|
|
const spy = new privateUnderTest.Spy('spy');
|
|
|
|
spy();
|
|
expect(function() {
|
|
matcher.compare(spy);
|
|
}).toThrowError(
|
|
/The expected times failed is a required argument and must be a number./
|
|
);
|
|
});
|
|
|
|
it('fails when the actual was called less than the expected', function() {
|
|
const matcher = privateUnderTest.matchers.toHaveBeenCalledTimes();
|
|
const uncalledSpy = new privateUnderTest.Spy('uncalled spy');
|
|
|
|
const result = matcher.compare(uncalledSpy, 2);
|
|
expect(result.pass).toBe(false);
|
|
});
|
|
|
|
it('fails when the actual was called more than expected', function() {
|
|
const matcher = privateUnderTest.matchers.toHaveBeenCalledTimes();
|
|
const uncalledSpy = new privateUnderTest.Spy('uncalled spy');
|
|
|
|
uncalledSpy();
|
|
uncalledSpy();
|
|
|
|
const result = matcher.compare(uncalledSpy, 1);
|
|
expect(result.pass).toBe(false);
|
|
});
|
|
|
|
it('throws an exception when the actual is not a spy', function() {
|
|
const matcher = privateUnderTest.matchers.toHaveBeenCalledTimes({
|
|
pp: privateUnderTest.makePrettyPrinter()
|
|
});
|
|
const fn = function() {};
|
|
|
|
expect(function() {
|
|
matcher.compare(fn);
|
|
}).toThrowError(/Expected a spy, but got Function./);
|
|
});
|
|
|
|
it('has a custom message on failure that tells it was called only once', function() {
|
|
const matcher = privateUnderTest.matchers.toHaveBeenCalledTimes();
|
|
const spy = new privateUnderTest.Spy('sample-spy');
|
|
spy();
|
|
spy();
|
|
spy();
|
|
spy();
|
|
|
|
const result = matcher.compare(spy, 1);
|
|
expect(result.message).toEqual(
|
|
'Expected spy sample-spy to have been called once. It was called ' +
|
|
4 +
|
|
' times.'
|
|
);
|
|
});
|
|
|
|
it('has a custom message on failure that tells how many times it was called', function() {
|
|
const matcher = privateUnderTest.matchers.toHaveBeenCalledTimes();
|
|
const spy = new privateUnderTest.Spy('sample-spy');
|
|
spy();
|
|
spy();
|
|
spy();
|
|
spy();
|
|
|
|
const result = matcher.compare(spy, 2);
|
|
expect(result.message).toEqual(
|
|
'Expected spy sample-spy to have been called 2 times. It was called ' +
|
|
4 +
|
|
' times.'
|
|
);
|
|
});
|
|
|
|
it('set the correct calls as verified when passing', function() {
|
|
const matcher = privateUnderTest.matchers.toHaveBeenCalledTimes();
|
|
const spy = new privateUnderTest.Spy('sample-spy');
|
|
|
|
spy();
|
|
spy();
|
|
|
|
matcher.compare(spy, 2);
|
|
|
|
expect(spy.calls.count()).toBe(2);
|
|
expect(spy.calls.unverifiedCount()).toBe(0);
|
|
});
|
|
});
|