Mocking interfaces
One of the problems with complex interfaces is that they can make mocking test data cumbersome in unit tests. TypeScript has some ways around this.
# Use the Utility Types
Check out Utility Types documentation. Here’s a simple example of using the
Omit
utility.
I was dealing with an interface that had a required property that was itself a complex data structure with further nested objects. Kind of like this:
interface Thing {
prop1: string;
prop2: string;
complexData: ComplexData
}
In my test, I didn’t need complexData
at all. So, it would have been really
heavy-handed to mock that data in my unit test. Using the Omit
utility, I was able to create an interface with all properties except the
complexData
property.
type MockThing = Omit<Thing, 'complexData'>; const thing: MockThing = { prop1: 'foo', prop2: 'bar' }
There’s a bunch of other utilities. See the TypeScript utility types docs for all of them.