I am getting this huge error running a Mocha test with node version 10 and a MongoDB database:
(node:27884) UnhandledPromiseRejectionWarning: AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:
assert( user.blogPosts[0].comments[0].content === ‘As programs get bigger, they also become more complex’ )
at User.findOne.populate.then.user (/Users/danale/Projects/users/test/association_test.js:50:9) at process._tickCallback (internal/process/next_tick.js:68:7) (node:27884) UnhandledPromiseRejectionWarning: Unhandled promiserejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1) (node:27884) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
For a Mocha test that was working earlier:
it('saves a full relation graph', done => { User.findOne({ name: 'Joe' }) .populate({ path: 'blogPosts', populate: { path: 'comments', model: 'comment', populate: { path: 'user', model: 'user' } } }) .then(user => { assert(user.name === 'Joe'); assert(user.blogPosts[0].title === 'Eloquent JavaScript'); assert( user.blogPosts[0].comments[0].content === 'As programs get bigger, they also become more complex' ); assert(user.blogPosts[0].comments[0].user.name === 'Joe'); done(); }); });
So I know the issue is here:
assert( user.blogPosts[0].comments[0].content === 'As programs get bigger, they also become more complex' );
but what exactly is wrong with this?
Advertisement
Answer
The error message was appropriate for the content
I was testing because I was testing the wrong content
in the it()
block. I was testing the content
inside my beforeEach()
:
beforeEach(done => { joe = new User({ name: 'Joe' }); blogPost = new BlogPost({ title: 'Eloquent JavaScript', content: 'As programs get bigger, they also become more complex' });
When I was really trying to test the content
in the comment
object here:
comment = new Comment({ content: 'Love this post' });
Once I corrected this to the appropriate content
above, all tests are passing.