检查Jasmine中的对象相等性

Dan*_*Dan 79 javascript bdd object-comparison jasmine

Jasmine有内置的匹配器toBetoEqual.如果我有这样的对象:

function Money(amount, currency){
    this.amount = amount;
    this.currency = currency;

    this.sum = function (money){
        return new Money(200, "USD");
    }
}
Run Code Online (Sandbox Code Playgroud)

并尝试比较new Money(200, "USD")和和的结果,这些内置的匹配器将无法按预期工作.我已经设法基于自定义equals方法和自定义匹配器实现了一种解决方法,但它似乎很有效.

比较Jasmine中对象的标准方法是什么?

luk*_*nis 161

我一直在寻找相同的东西,并找到了一种现有的方法,没有任何自定义代码或匹配器.使用toEqual().


obf*_*bfk 57

如果您要比较部分对象,可以考虑:

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"
    }));
  });
});
Run Code Online (Sandbox Code Playgroud)

比照 jasmine.github.io/partial-matching