Our old Socket.IO code was tested, but only incidentally by our business logic tests. Now that we have a dedicated Socket.IO abstraction, we can do better. We add tests for all our network-related server events—and in the process, discover a way to make our tests much easier to write and understand.