Jasmine에서 개체 평등 확인
Jasmine 에는 매처 toBe
및 toEqual
. 다음과 같은 개체가있는 경우 :
function Money(amount, currency){
this.amount = amount;
this.currency = currency;
this.sum = function (money){
return new Money(200, "USD");
}
}
비교 new Money(200, "USD")
하고 합계의 결과를 시도하면 이러한 내장 매 처가 예상대로 작동하지 않습니다. 사용자 지정 equals
메서드 와 사용자 지정 매처를 기반으로 한 해결 방법 을 구현 했지만 많은 효과가있는 것 같습니다.
Jasmine에서 물체를 비교하는 표준 방법은 무엇입니까?
나는 똑같은 것을 찾고 있었고 사용자 정의 코드 또는 매처없이 그렇게 할 수있는 기존 방법을 찾았습니다. 사용 toEqual()
.
부분 개체를 비교하려는 경우 다음을 고려할 수 있습니다.
describe("jasmine.objectContaining", function() {
var foo;
beforeEach(function() {
foo = {
a: 1,
b: 2,
bar: "baz"
};
});
it("matches objects with the expect key/value pairs", function() {
expect(foo).toEqual(jasmine.objectContaining({
bar: "baz"
}));
});
});
cf. jasmine.github.io/partial-matching
객체의 두 인스턴스가 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
깨끗한 테스트를 위해 당신은이 비교 자신의 정규 작성해야 amount
하고 currency
:
beforeEach(function() {
this.addMatchers({
sameAmountOfMoney: function(expected) {
return this.actual.currency == expected.currency && this.actual.amount == expected.amount;
}
});
});
lodash _.isEqual이 그에 적합하다는 것을 알았습니다.
expect(_.isEqual(result, expectedResult)).toBeTruthy()
당신의 문제는 진실성에 있습니다. 일반 같음 (a == b)에 대해서는 참이지만 완전 같음 (a === b)에는 참이 아닌 객체의 두 인스턴스를 비교하려고합니다. 재스민이 사용하는 비교기는 엄격한 동등성을 찾는 jasmine.Env.equals_ () 입니다.
코드를 변경하지 않고 필요한 작업을 수행하려면 다음과 같이 진실성을 확인하여 정규 동등성을 사용할 수 있습니다.
expect(money1.sum() == money2.sum()).toBeTruthy();
참고 URL : https://stackoverflow.com/questions/16401237/checking-object-equality-in-jasmine
'programing' 카테고리의 다른 글
파이썬에서 두 개의 정렬 된 목록을 어떻게 비교할 수 있습니까? (0) | 2020.10.12 |
---|---|
.includes ()가 Internet Explorer에서 작동하지 않음 (0) | 2020.10.12 |
VideoView를 사용한 원활한 비디오 루프 (0) | 2020.10.11 |
모든 테이블 삭제 명령 (0) | 2020.10.11 |
부동 소수점 숫자를 특정 소수점 자리로 반올림하는 방법은 무엇입니까? (0) | 2020.10.11 |