Comments (4)
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.
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.
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.
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)
- Dataview comparison ignores offsets HOT 2
- 'function' comparison
- objectEqual Sorts Keys Before Compare HOT 2
- Build failing due to change in error comparison algo HOT 2
- New version not automatically released HOT 4
- Assertion error does not state problematic parts for Maps HOT 1
- Comparison between uninitialized arrays fail HOT 3
- Get mismatch info? HOT 1
- Deep equality with a set depth
- Test project in Safari, Chrome, Firefox and Edge in the GitHub action
- URLSearchParams deep equal not working HOT 2
- Add TypeScript types
- Update karma package version to the newer one to support newer nodejs version HOT 1
- ChainAlert: new npm maintainer has published version 4.0.1 of package deep-eql
- Support for tc39/proposal-temporal HOT 1
- TypeError: Cannot convert a Symbol value to a string
- Feature request: Add possibility to exclude/omit keys when comparing objects HOT 2
- Loosely comparator with Set gives false result HOT 1
- Cannot reliably compare Ada-based URLs (Node.js v18.17.0 & newer) HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from deep-eql.