Jasmine has built-in matchers toBe
and toEqual
. If I have an object like this:
function Money(amount, currency){
this.amount = amou
Its the expected behavior, as two instances of an object are not the same in JavaScript.
function Money(amount, currency){
this.amount = amount;
this.currency = currency;
this.sum = function (money){
return new Money(200, "USD");
}
}
var a = new Money(200, "USD")
var b = a.sum();
console.log(a == b) //false
console.log(a === b) //false
For a clean test you should write your own matcher that compares amount
and currency
:
beforeEach(function() {
this.addMatchers({
sameAmountOfMoney: function(expected) {
return this.actual.currency == expected.currency && this.actual.amount == expected.amount;
}
});
});