Jasmine 2.0.3 - custom matcher - toHaveFirstAndLastName
toHaveFirstAndLastName matcher
HTML
<link rel="stylesheet" href="//safjanowski.github.io/jasmine-jsfiddle-pack/pack/jasmine.css">
<script src="//safjanowski.github.io/jasmine-jsfiddle-pack/pack/jasmine-2.0.3-concated.js"></script>
JavaScript
var Person = function (firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
describe('Person', function() {
beforeEach(function() {
jasmine.addMatchers({
toHaveFirstAndLastName: function () {
function compare(actual) {
var person = actual;
return {
pass: person.firstName && person.lastName
}
}
return {
compare: compare
}
}
})
});
it('has first and last name', function() {
var p = new Person('John', 'Doe');
var r = new Person('Only first name');
var q = new Person('0', 'undefined');
expect(p).toEqual(jasmine.any(Person))
expect(p).toHaveFirstAndLastName();
expect(r).not.toHaveFirstAndLastName();
expect(q).toEqual(jasmine.any(Person))
});
});