Giter VIP home page Giter VIP logo

Comments (4)

matthew-dean avatar matthew-dean commented on July 19, 2024 1

I was also surprised by this breaking change. I updated to the latest chai (4.3.7) and all of the sudden, non-enumerable properties are included in the equality comparison.

from deep-eql.

lucaswerkmeister avatar lucaswerkmeister commented on July 19, 2024

To provide some context for the “unintuitive” description, if you’re curious: in m3api-query, I use non-enumerable symbol properties to attach additional information to objects that users of my library might find useful, but won’t necessarily need all of the time; I don’t need them to show up in console.log(), for example. (In fact, I was under the mistaken impression that, without a reference to the symbol, you couldn’t access the property at all: I was unaware that Object.getOwnPropertyNames() and Object.getOwnPropertySymbols() include non-enumerable properties in their return values.) In tests that aren’t focused on these additional properties, I compare the objects returned by my library with object literals that only have the “main” properties, and expect those comparisons to succeed; after an npm update, they failed.

The assertion failure message was also not easy to understand, unfortunately:

      AssertionError: expected { Object (revid) } to deeply equal { revid: 123 }                                                                   
      + expected - actual                                                                                                                          

But that’s probably not deep-eql’s fault, I think the message formatting is somewhere else in Chai.

from deep-eql.

keithamus avatar keithamus commented on July 19, 2024

Thanks for the issue. It’s definitely valid. We should only compare enumerable properties.

As an aside, the message formatting code is in Loupe. If you have an idea of what the error message should have looked like, it’d be amazing if you could file an issue and we can work to make it better.

from deep-eql.

lucaswerkmeister avatar lucaswerkmeister commented on July 19, 2024

Thanks! Regarding Loupe, not sure what should be done, especially if it’s a general-purpose “inspect” library… I played with it a few minutes and couldn’t reproduce the { Object (revid) } output, so I might be doing something wrong.

I guess with this change merged, it shouldn’t matter anyways ^^

from deep-eql.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.