100 lines
3.3 KiB
JavaScript
100 lines
3.3 KiB
JavaScript
describe('toHaveBeenCalledWith', function() {
|
|
it('passes when the actual was called with matching parameters', function() {
|
|
var matchersUtil = {
|
|
contains: jasmine.createSpy('delegated-contains').and.returnValue(true),
|
|
pp: jasmineUnderTest.makePrettyPrinter()
|
|
},
|
|
matcher = jasmineUnderTest.matchers.toHaveBeenCalledWith(matchersUtil),
|
|
calledSpy = new jasmineUnderTest.Spy('called-spy'),
|
|
result;
|
|
|
|
calledSpy('a', 'b');
|
|
result = matcher.compare(calledSpy, 'a', 'b');
|
|
|
|
expect(result.pass).toBe(true);
|
|
expect(result.message()).toEqual(
|
|
"Expected spy called-spy not to have been called with:\n [ 'a', 'b' ]\nbut it was."
|
|
);
|
|
});
|
|
|
|
it('supports custom equality testers', function() {
|
|
var customEqualityTesters = [
|
|
function() {
|
|
return true;
|
|
}
|
|
],
|
|
matchersUtil = new jasmineUnderTest.MatchersUtil({
|
|
customTesters: customEqualityTesters
|
|
}),
|
|
matcher = jasmineUnderTest.matchers.toHaveBeenCalledWith(matchersUtil),
|
|
calledSpy = new jasmineUnderTest.Spy('called-spy'),
|
|
result;
|
|
|
|
calledSpy('a', 'b');
|
|
result = matcher.compare(calledSpy, 'a', 'b');
|
|
expect(result.pass).toBe(true);
|
|
});
|
|
|
|
it('fails when the actual was not called', function() {
|
|
var matchersUtil = {
|
|
contains: jasmine
|
|
.createSpy('delegated-contains')
|
|
.and.returnValue(false),
|
|
pp: jasmineUnderTest.makePrettyPrinter()
|
|
},
|
|
matcher = jasmineUnderTest.matchers.toHaveBeenCalledWith(matchersUtil),
|
|
uncalledSpy = new jasmineUnderTest.Spy('uncalled spy'),
|
|
result;
|
|
|
|
result = matcher.compare(uncalledSpy);
|
|
expect(result.pass).toBe(false);
|
|
expect(result.message()).toEqual(
|
|
'Expected spy uncalled spy to have been called with:\n [ ]\nbut it was never called.'
|
|
);
|
|
});
|
|
|
|
it('fails when the actual was called with different parameters', function() {
|
|
var matchersUtil = new jasmineUnderTest.MatchersUtil({
|
|
pp: jasmineUnderTest.makePrettyPrinter()
|
|
}),
|
|
matcher = jasmineUnderTest.matchers.toHaveBeenCalledWith(matchersUtil),
|
|
calledSpy = new jasmineUnderTest.Spy('called spy'),
|
|
result;
|
|
|
|
calledSpy('a');
|
|
calledSpy('c', 'd');
|
|
calledSpy('a', 'b', 'c');
|
|
result = matcher.compare(calledSpy, 'a', 'b');
|
|
|
|
expect(result.pass).toBe(false);
|
|
expect(result.message()).toEqual(
|
|
'Expected spy called spy to have been called with:\n' +
|
|
" [ 'a', 'b' ]\n" +
|
|
'but actual calls were:\n' +
|
|
" [ 'a' ],\n" +
|
|
" [ 'c', 'd' ],\n" +
|
|
" [ 'a', 'b', 'c' ].\n\n" +
|
|
'Call 0:\n' +
|
|
' Expected $.length = 1 to equal 2.\n' +
|
|
" Expected $[1] = undefined to equal 'b'.\n" +
|
|
'Call 1:\n' +
|
|
" Expected $[0] = 'c' to equal 'a'.\n" +
|
|
" Expected $[1] = 'd' to equal 'b'.\n" +
|
|
'Call 2:\n' +
|
|
' Expected $.length = 3 to equal 2.\n' +
|
|
" Unexpected $[2] = 'c' in array."
|
|
);
|
|
});
|
|
|
|
it('throws an exception when the actual is not a spy', function() {
|
|
var matcher = jasmineUnderTest.matchers.toHaveBeenCalledWith({
|
|
pp: jasmineUnderTest.makePrettyPrinter()
|
|
}),
|
|
fn = function() {};
|
|
|
|
expect(function() {
|
|
matcher.compare(fn);
|
|
}).toThrowError(/Expected a spy, but got Function./);
|
|
});
|
|
});
|