Learning in the Community: How C3 Builds Better Developers and Teams

July 2, 2025

blog

At Ingage Partners, we believe that great software is built by great teams, and great teams never stop learning.

That belief drives everything we do, from how we work with clients to how we grow our own people. One of the ways we live that out is through C3: Code, Craft, Community, a monthly meetup we host that brings together developers from all levels and backgrounds to sharpen their skills, pair program, and explore the deeper questions behind great software development.

We don’t just talk about learning. We practice it, publicly and together.

June’s Meetup: Unit Testing with Mocks

At our June 18th session, we built upon the concepts of writing testable code with mocks and fakes that we covered in May, and learned how to use some new tools to write even better unit tests.

We used this kata to explore Unit testing with Mock testing frameworks. In May we wrote our own mocks or fakes to substitute in place of the real dependencies in our code. This month, we learned how to use mock testing frameworks like ts-mockito (for TypeScript) to mock and fake our dependencies, and add assertions so we can verify that our dependency was called with the expected inputs.

Like May’s session, this one started with a relatable TypeScript example that showed how we can use the ts-mockito framework to create the desired behaviors of our fake/mock dependency, and then how we can verify that the dependency was called as expected. After that brief introduction, we introduced the kata, which was a pre-written application that managed a list of students and grades in a simple in-memory database. There were passing unit tests on the application code, and the unit tests would appear at first glance to fully cover the code. However, when actually using the application, we observed that certain operations did not work properly.

There were many bugs! For instance, if you added a student, the application indicated it was added successfully, but if you listed out the students, the names were incorrect. Then if you tried to delete a student, it indicated that it was deleted successfully, but in some cases, nothing was deleted, and in other cases, the wrong student was deleted. But all the unit tests covered this code, and they all were passing! So obviously the tests needed some work, because they were not properly testing the code and were not finding these bugs.

At this point, pairs worked through the kata in the language of their choice, using templates provided in our GitHub repo.

By the end of the night, we had learned:

  • The fundamentals of Test-Driven Development

  • What it means to design for substitution

  • How to extract interfaces from implementations

  • When and how to mock interfaces for clarity and testability

  • How to use mock frameworks to verify the interactions with our code’s dependencies

  • How to do exploratory testing with your software/application (unit tests may not catch everything!)

Some people used a mock framework for the first time. Others learned new things about mocks and how they can help write better quality unit tests. Everyone left better than they arrived.

Why It Matters

This is more than a meetup. It’s a reflection of who we are.

At Ingage, we invest in growth, not just within our company, but in the broader Cincinnati tech community. We know that building better developers builds better teams, and better teams create better outcomes for our clients.

Come Code With Us

If you’re a developer in the Cincinnati area, we’d love to see you at our next C3 meetup. We meet monthly, on the third Wednesday of the month, at the Ingage Partners office (2943 Riverside Drive), and we welcome developers of all backgrounds, experience levels, and technologies & programming languages. Come to write code, pair up, ask questions, and eat some pizza.

Because when we share knowledge, everyone levels up.