Introduction to Mocking Packages
Learn why and how we mock dependencies.
We'll cover the following
Why do we mock packages?
Open-source software is a vital part of any modern codebase. It allows us to gain robust features and support complex logic with as little as just a few lines of code. These same external libraries often don’t play nice with testing environments out of the box, though.
This won’t be true for all external packages, and each package should be considered individually. Entire frameworks like Koa
and Angular
are packaged as third-party code, and we don’t want to mock these. Additionally, some libraries might provide functionality that just doesn’t need to be mocked, such as the format
or joi
packages.
Mocking our external packages can feel overwhelming at first. Often when we start running our tests, if we haven’t mocked a package, the errors we find ourselves facing can feel out of place, unhelpful, and difficult to debug. This is because the code, and therefore the error handling, is intended to be running in a real-world environment, not a test environment. Therefore, it can be confusing to discern what’s happening.
How do we mock packages?
Mocking all packages comes down to a singular guiding philosophy. Mocking dependencies is about creating an object that matches the interface of the package being mocked. What do we mean when we say “matches the interface”?
Get hands-on with 1400+ tech skills courses.