Alex's Slip-box

These are my org-mode notes in sort of Zettelkasten style

Mocking interfaces

:ID: BCA3E412-537C-44A0-B31A-8E0993AD3B0E

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.